Source Code
Latest 25 from a total of 27 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Bulk Update Refe... | 27514024 | 86 days ago | IN | 0 FRAX | 0.00017844 | ||||
| Self Add Referra... | 27478207 | 87 days ago | IN | 0 FRAX | 0.00006375 | ||||
| Self Add Referra... | 27316834 | 90 days ago | IN | 0 FRAX | 0.00000846 | ||||
| Self Add Referra... | 27227535 | 92 days ago | IN | 0 FRAX | 0.0000082 | ||||
| Self Add Referra... | 27226748 | 92 days ago | IN | 0 FRAX | 0.00000725 | ||||
| Bulk Update Refe... | 23723832 | 174 days ago | IN | 0 FRAX | 0.00003864 | ||||
| Self Add Referra... | 20856556 | 240 days ago | IN | 0 FRAX | 0.00000326 | ||||
| Self Add Referra... | 20085882 | 258 days ago | IN | 0 FRAX | 0.00000002 | ||||
| Self Add Referra... | 19836766 | 264 days ago | IN | 0 FRAX | 0.00000001 | ||||
| Self Add Referra... | 19683539 | 267 days ago | IN | 0 FRAX | 0.00000016 | ||||
| Self Add Referra... | 19606604 | 269 days ago | IN | 0 FRAX | 0.00000001 | ||||
| Bulk Update Refe... | 17562442 | 316 days ago | IN | 0 FRAX | 0.00000006 | ||||
| Self Add Referra... | 17503233 | 318 days ago | IN | 0 FRAX | 0.00000004 | ||||
| Self Add Referra... | 17176832 | 325 days ago | IN | 0 FRAX | 0.00000007 | ||||
| Bulk Update Refe... | 17115559 | 327 days ago | IN | 0 FRAX | 0.00000015 | ||||
| Bulk Update Refe... | 17093060 | 327 days ago | IN | 0 FRAX | 0.00000012 | ||||
| Manage Flox Cont... | 17093013 | 327 days ago | IN | 0 FRAX | 0.00000005 | ||||
| Self Add Referra... | 16309880 | 345 days ago | IN | 0 FRAX | 0.00000008 | ||||
| Self Add Referra... | 16174632 | 348 days ago | IN | 0 FRAX | 0.00000007 | ||||
| Self Add Referra... | 16111685 | 350 days ago | IN | 0 FRAX | 0.00000024 | ||||
| Self Add Referra... | 16024927 | 352 days ago | IN | 0 FRAX | 0.00000057 | ||||
| Self Add Referra... | 15969247 | 353 days ago | IN | 0 FRAX | 0.00000011 | ||||
| Self Add Referra... | 15969246 | 353 days ago | IN | 0 FRAX | 0.00000011 | ||||
| Self Add Referra... | 15969244 | 353 days ago | IN | 0 FRAX | 0.00000013 | ||||
| Self Add Referra... | 15550540 | 363 days ago | IN | 0 FRAX | 0.00000067 |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
ReflinkTracker
Compiler Version
v0.8.26+commit.8a97fa7a
Optimization Enabled:
Yes with 100000 runs
Other Settings:
cancun EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity >=0.8.0;
/**
* ====================================================================
* | ______ _______ |
* | / _____________ __ __ / ____(_____ ____ _____ ________ |
* | / /_ / ___/ __ `| |/_/ / /_ / / __ \/ __ `/ __ \/ ___/ _ \ |
* | / __/ / / / /_/ _> < / __/ / / / / / /_/ / / / / /__/ __/ |
* | /_/ /_/ \__,_/_/|_| /_/ /_/_/ /_/\__,_/_/ /_/\___/\___/ |
* | |
* ====================================================================
* ======================= ReflinkTracker =============================
* ====================================================================
* Frax Finance: https://github.com/FraxFinance
*/
import { ReflinkTrackerAccessControl } from "./ReflinkTrackerAccessControl.sol";
/**
* @title ReflinkTracker
* @author Frax Finance
* @notice A smart contact used to track referrals of the Flox Reflink system.
*/
contract ReflinkTracker is ReflinkTrackerAccessControl {
/**
* @notice Used to store referral information.
*/
struct Referral {
address referrer; // Address of the referrer
bytes32 bridgeTx; // Transaction hash of the transaction that bridged assets to Fraxtal and triggered the referral
uint128 timestamp; // Timestamp of the referral completion
uint64 pointsAwarded; // Points awarded to the user
uint64 referrerPointsAwarded; // Points awarded to the referrer
}
/**
* @notice Used to store referrer information.
*/
struct Referrer {
uint128 referrals; // Number of successfull referrals the referrer has made
uint64 pointsEarned; // Total points earned by the referrer
}
/**
* @notice Used to track referrals.
* @dev user Address of the user
* @dev referral Referral information
*/
mapping(address user => Referral referral) public referrals;
/**
* @notice Used to track referrers.
* @dev user Address of the referrer
* @dev referrer Referrer information
*/
mapping(address user => Referrer referrer) public referrers;
/**
* @notice Used to track referrer's users.
* @dev referrer Address of the referrer
* @dev index Index of the user (Use `referrers` to get the number of users the referrer has referred)
* @dev user Address of the user
*/
mapping(address referrer => mapping(uint256 index => address user)) public referrerUsers;
/**
* @notice Used to track users that used the referral system globally.
* @dev index Index of the user (the last user is stored at `totalReferrals` - 1)
* @dev user Address of the user
*/
mapping(uint256 index => address user) public users;
/// Total number of referrals recorded.
uint256 public totalReferrals;
/**
* @notice Used to initialize the smart contract.
* @dev The contract is initialized with the address of the deployer as the owner.
*/
constructor() ReflinkTrackerAccessControl(msg.sender) {}
/**
* @notice Used to quickly determine if referral information is recorded for a user.
* @dev This checks for the record of the bridge transaction hash.
* @param _user Address of the user
* @return _submitted True if the user has submitted a referral, false otherwise
*/
function referralSubmitted(address _user) external view returns (bool _submitted) {
return referrals[_user].bridgeTx != bytes32(0);
}
/**
* @notice Used to quickly determine if referral points have been allocated for a user.
* @param _user Address of the user
* @return _allocated True if the ponts for the referral have been allocated or not
*/
function referralPointsAllocated(address _user) external view returns (bool _allocated) {
return referrals[_user].pointsAwarded != 0;
}
/**
* @notice Used to add a referral.
* @dev This can only be called by a Flox contributor.
* @param _user Address of the user
* @param _bridgeTx Transaction hash of the transaction that bridged assets to Fraxtal and triggered the referral
* @param _referrer Address of the referrer
* @param _timestamp Timestamp of the referral completion
* @param _userPointsAwarded Points awarded to the referrer and the referee (each gets this amount)
*/
function addReferral(
address _user,
bytes32 _bridgeTx,
address _referrer,
uint128 _timestamp,
uint64 _userPointsAwarded,
uint64 _referrerPointsAwarded
) public {
_onlyFloxContributor();
_addReferral(_user, _bridgeTx, _referrer, _timestamp, _userPointsAwarded, _referrerPointsAwarded);
}
/**
* @notice Used to add multiple referrals.
* @dev This can only be called by a Flox contributor.
* @dev If the lengths of the arrays do not match, the function will revert.
* @param _users Addresses of the users
* @param _bridgeTxs Transaction hashes of the transactions that bridged assets to Fraxtal and triggered the referrals
* @param _referrers Addresses of the referrers
* @param _timestamps Timestamps of the referral completions
* @param _userPointsAwarded Points awarded to the users
* @param _referrerPointsAwarded Points awarded to the referrers
*/
function bulkAddReferral(
address[] memory _users,
bytes32[] memory _bridgeTxs,
address[] memory _referrers,
uint128[] memory _timestamps,
uint64[] memory _userPointsAwarded,
uint64[] memory _referrerPointsAwarded
) external {
_onlyFloxContributor();
if (
_users.length != _bridgeTxs.length ||
_users.length != _referrers.length ||
_users.length != _timestamps.length ||
_users.length != _userPointsAwarded.length ||
_users.length != _referrerPointsAwarded.length
) revert ArrayLengthMissmatch();
for (uint256 i; i < _users.length; ) {
_addReferral(
_users[i],
_bridgeTxs[i],
_referrers[i],
_timestamps[i],
_userPointsAwarded[i],
_referrerPointsAwarded[i]
);
unchecked {
++i;
}
}
}
/**
* @notice Used to add a referral for oneself.
* @dev This can only be called by the user and it allows the user to add a referral for themselves.
* @dev This function only records the referrer and the completion conditions. The points are set once they are
* allocated by a Flox contibutor.
* @param _bridgeTx Transaction hash of the transaction that bridged assets to Fraxtal and triggered the referral
* @param _referrer Address of the referrer
*/
function selfAddReferral(bytes32 _bridgeTx, address _referrer) external {
_addReferral(msg.sender, _bridgeTx, _referrer, uint128(block.timestamp), 0, 0);
}
/**
* @notice Used to update referral information.
* @dev This can only be called by a Flox contributor.
* @dev If any of the parameters are set to zero value, the function will not update the corresponding field.
* @param _user Address of the user
* @param _bridgeTx Transaction hash of the transaction that bridged assets to Fraxtal and triggered the referral
* @param _referrer Address of the referrer
* @param _timestamp Timestamp of the referral completion
* @param _userPointsAwarded Points awarded to the user
* @param _referrerPointsAwarded Points awarded to the referrer
*/
function updateReferral(
address _user,
bytes32 _bridgeTx,
address _referrer,
uint128 _timestamp,
uint64 _userPointsAwarded,
uint64 _referrerPointsAwarded
) public {
_onlyFloxContributor();
_updateReferral(_user, _bridgeTx, _referrer, _timestamp, _userPointsAwarded, _referrerPointsAwarded);
}
/**
* @notice Used to update multiple referrals.
* @dev This can only be called by a Flox contributor.
* @dev If the lengths of the arrays do not match, the function will revert.
* @dev If any of the parameters are set to zero value, the function will not update the corresponding field.
* @param _users Addresses of the users
* @param _bridgeTxs Transaction hashes of the transactions that bridged assets to Fraxtal and triggered the referrals
* @param _referrers Addresses of the referrers
* @param _timestamps Timestamp of the referral completions
* @param _userPointsAwarded Points awarded to the users
* @param _referrerPointsAwarded Points awarded to the referrers
*/
function bulkUpdateReferral(
address[] memory _users,
bytes32[] memory _bridgeTxs,
address[] memory _referrers,
uint128[] memory _timestamps,
uint64[] memory _userPointsAwarded,
uint64[] memory _referrerPointsAwarded
) external {
_onlyFloxContributor();
if (
_users.length != _bridgeTxs.length ||
_users.length != _referrers.length ||
_users.length != _timestamps.length ||
_users.length != _userPointsAwarded.length ||
_users.length != _referrerPointsAwarded.length
) revert ArrayLengthMissmatch();
for (uint256 i; i < _users.length; ) {
_updateReferral(
_users[i],
_bridgeTxs[i],
_referrers[i],
_timestamps[i],
_userPointsAwarded[i],
_referrerPointsAwarded[i]
);
unchecked {
++i;
}
}
}
/**
* @notice Used to add a referral.
* @dev This internal method is used to provide referral management capabilities to self- and Flox contibutor-
* facing functions.
* @param _user Address of the user
* @param _bridgeTx Transaction hash of the transaction that bridged assets to Fraxtal and triggered the referral
* @param _referrer Address of the referrer
* @param _timestamp Timestamp of the referral completion
* @param _userPointsAwarded Points awarded to the user
* @param _referrerPointsAwarded Points awarded to the referrer
*/
function _addReferral(
address _user,
bytes32 _bridgeTx,
address _referrer,
uint128 _timestamp,
uint64 _userPointsAwarded,
uint64 _referrerPointsAwarded
) internal {
if (_user == address(0)) revert InvalidUserAddress();
if (_referrer == address(0)) revert InvalidReferrerAddress();
Referral storage referral = referrals[_user];
Referrer storage referrer = referrers[_referrer];
if (referral.referrer != address(0)) revert ReferralAlreadyExists();
referral.referrer = _referrer;
referral.bridgeTx = _bridgeTx;
referral.timestamp = _timestamp;
referral.pointsAwarded = _userPointsAwarded;
referral.referrerPointsAwarded = _referrerPointsAwarded;
referrerUsers[_referrer][referrer.referrals] = _user;
users[totalReferrals] = _user;
referrer.referrals += 1;
referrer.pointsEarned += _referrerPointsAwarded;
totalReferrals += 1;
emit ReferralAdded(_referrer, _user, _referrerPointsAwarded, _userPointsAwarded);
}
/**
* @notice Used to update referral information.
* @dev This internal method is used to provide referral management capabilities to Flox contibuor-facing functions.
* @param _user Address of the user to update the referral for
* @param _bridgeTx Tramsactopm hash of the transaction that bridged assets to Fraxtal and triggered the referral
* @param _referrer Address of the referrer
* @param _timestamp Timestamp of the referral completion
* @param _userPointsAwarded Points awarded to the user
* @param _referrerPointsAwarded Points awarded to the referrer
*/
function _updateReferral(
address _user,
bytes32 _bridgeTx,
address _referrer,
uint128 _timestamp,
uint64 _userPointsAwarded,
uint64 _referrerPointsAwarded
) internal {
if (_user == address(0)) revert InvalidUserAddress();
Referral storage referral = referrals[_user];
if (referral.referrer == address(0)) revert ReferralDoesNotExist();
address previousReferrer = referral.referrer;
if (_referrer == address(0)) _referrer = previousReferrer;
Referrer storage referrer = referrers[_referrer];
if (_bridgeTx != bytes32(0)) referral.bridgeTx = _bridgeTx;
if (_timestamp != 0) referral.timestamp = _timestamp;
// This ensures that you can pass zero-value to leave the points as they were before
if (_userPointsAwarded == 0) _userPointsAwarded = referral.pointsAwarded;
if (_referrerPointsAwarded == 0) _referrerPointsAwarded = referral.referrerPointsAwarded;
// This ensures that the points are properly tracked for the past and current referrers
if (_referrerPointsAwarded != 0) {
referrers[previousReferrer].pointsEarned -= referral.referrerPointsAwarded; // This could possibly be the same as `referrer`, but not necessarily
referral.referrerPointsAwarded = _referrerPointsAwarded;
referrer.pointsEarned += _referrerPointsAwarded;
}
if (_userPointsAwarded != 0) {
referral.pointsAwarded = _userPointsAwarded;
}
// Find the index of the user in the previous referrer's mapping to replace it so it can be moved to new referrer's mapping
if (previousReferrer != _referrer) {
uint256 index;
for (uint256 i; i < referrers[previousReferrer].referrals; ) {
if (referrerUsers[previousReferrer][i] == _user) {
index = i;
break;
}
unchecked {
++i;
}
}
referrers[previousReferrer].referrals -= 1;
// Move the last user to the index of the user being removed - this is cheaper than shifting the whole mapping
referrerUsers[previousReferrer][index] = referrerUsers[previousReferrer][
referrers[previousReferrer].referrals
];
referrerUsers[previousReferrer][referrers[previousReferrer].referrals] = address(0);
referrerUsers[_referrer][referrer.referrals] = _user;
referrer.referrals += 1;
}
referral.referrer = _referrer;
emit ReferralUpdated(
previousReferrer,
_referrer,
_user,
referral.referrerPointsAwarded,
referral.pointsAwarded
);
}
}// SPDX-License-Identifier: MIT
pragma solidity >=0.8.0;
/**
* ====================================================================
* | ______ _______ |
* | / _____________ __ __ / ____(_____ ____ _____ ________ |
* | / /_ / ___/ __ `| |/_/ / /_ / / __ \/ __ `/ __ \/ ___/ _ \ |
* | / __/ / / / /_/ _> < / __/ / / / / / /_/ / / / / /__/ __/ |
* | /_/ /_/ \__,_/_/|_| /_/ /_/_/ /_/\__,_/_/ /_/\___/\___/ |
* | |
* ====================================================================
* =================== ReflinkTrackerAccessControl ====================
* ====================================================================
* Frax Finance: https://github.com/FraxFinance
*/
import { IReflinkTrackerEvents } from "./interfaces/IReflinkTrackerEvents.sol";
/**
* @title ReflinkTrackerAccessControl
* @author Frax Finance
* @notice The ReflinkTrackerAccessControl contract is used to power the access control of the ReflinkTracker smart
* contract.
*/
contract ReflinkTrackerAccessControl is IReflinkTrackerEvents {
/// Address of the owner of the contract.
address public owner;
/// Address of the nominated owner of the contract.
address public nominatedOwner;
/**
* @notice Used to track Flox contributors.
* @dev contributor Address of the contributor
* @dev isContributor Status of the contributor
*/
mapping(address contributor => bool isContributor) public floxContributors;
/**
* @notice Used to initialize the smart contract and set the owner.
* @param _owner Address of the owner of the contract
*/
constructor(address _owner) {
owner = _owner;
}
/**
* @notice Used to restrict function execution to calls initiated by the owner.
*/
modifier onlyOwner() {
if (msg.sender != owner) revert NotOwner();
_;
}
/**
* @notice Nominate a new owner for the contract.
* @dev Only the current owner can nominate a new owner.
* @param _owner Address of the new owner
*/
function nominateNewOwner(address _owner) external onlyOwner {
nominatedOwner = _owner;
emit OwnerNominated(_owner);
}
/**
* @notice Accept the ownership of the contract.
* @dev Only the nominated owner can accept the ownership.
*/
function acceptOwnership() external {
if (msg.sender != nominatedOwner) revert NotNominatedOwner();
address oldOwner = owner;
owner = nominatedOwner;
nominatedOwner = address(0);
emit OwnerChanged(oldOwner, owner);
}
/**
* @notice Manage Flox contributors.
* @dev Flox contributor is allowed to manage all quests as well as their progress status for every user.
* @param _contributor Address of the contributor to manage
* @param _isContributor Status to assign the contributor. `false` to remove, `true` to add.
*/
function manageFloxContributors(address _contributor, bool _isContributor) external onlyOwner {
if (floxContributors[_contributor] == _isContributor) revert SameContributorStatus();
floxContributors[_contributor] = _isContributor;
emit FloxContributorStatusUpdate(_contributor, _isContributor);
}
/**
* @notice Used to restrict function execution to calls initiated by a Flox contributor.
*/
function _onlyFloxContributor() internal view {
if (!floxContributors[msg.sender]) revert NotFloxContributor();
}
}// SPDX-License-Identifier: MIT
pragma solidity >=0.8.0;
/**
* ====================================================================
* | ______ _______ |
* | / _____________ __ __ / ____(_____ ____ _____ ________ |
* | / /_ / ___/ __ `| |/_/ / /_ / / __ \/ __ `/ __ \/ ___/ _ \ |
* | / __/ / / / /_/ _> < / __/ / / / / / /_/ / / / / /__/ __/ |
* | /_/ /_/ \__,_/_/|_| /_/ /_/_/ /_/\__,_/_/ /_/\___/\___/ |
* | |
* ====================================================================
* ====================== IReflinkTrackerEvents =======================
* ====================================================================
* Frax Finance: https://github.com/FraxFinance
*/
import { IReflinkTrackerErrors } from "./IReflinkTrackerErrors.sol";
/**
* @title IReflinkTrackerEvents
* @author Frax Finance
* @notice A collection of events used by the Flox Reflink system.
*/
contract IReflinkTrackerEvents is IReflinkTrackerErrors {
/**
* @notice Emitted when the Flox contributor status is updated.
* @param contributor Address of the cintributor being updated
* @param isContributor New status assigned to the contributor
*/
event FloxContributorStatusUpdate(address contributor, bool isContributor);
/**
* @notice Emitted when the ownership of the contract is transferred.
* @param oldOwner Address of the previous owner
* @param newOwner Address of the new owner
*/
event OwnerChanged(address oldOwner, address newOwner);
/**
* @notice Emitted when a new owner is nominated.
* @param newOwner Address of the account nominated to be the new owner
*/
event OwnerNominated(address newOwner);
/**
* @notice Emitted when a new referral is logged.
* @param referrer Address of the referrer
* @param referee Address of the referee
* @param referrerPointsAwarded Amount of points awarded to the referrer
* @param userPointsAwarded Amount of points awarded to the user
*/
event ReferralAdded(
address indexed referrer,
address indexed referee,
uint64 referrerPointsAwarded,
uint64 userPointsAwarded
);
/**
* @notice Emitted when a referral is updated.
* @param previousReferrer Address of the original referrer
* @param currentReferrer Address of the current referrer
* @param referee Address of the referee
* @param referrerPointsAwarded Amount of points awarded to the referrer
* @param userPointsAwarded Amount of points awarded to the user
*/
event ReferralUpdated(
address indexed previousReferrer,
address indexed currentReferrer,
address indexed referee,
uint64 referrerPointsAwarded,
uint64 userPointsAwarded
);
}// SPDX-License-Identifier: MIT
pragma solidity >=0.8.0;
/**
* ====================================================================
* | ______ _______ |
* | / _____________ __ __ / ____(_____ ____ _____ ________ |
* | / /_ / ___/ __ `| |/_/ / /_ / / __ \/ __ `/ __ \/ ___/ _ \ |
* | / __/ / / / /_/ _> < / __/ / / / / / /_/ / / / / /__/ __/ |
* | /_/ /_/ \__,_/_/|_| /_/ /_/_/ /_/\__,_/_/ /_/\___/\___/ |
* | |
* ====================================================================
* =================== IReflinkTrackerErrors ======================
* ====================================================================
* Frax Finance: https://github.com/FraxFinance
*/
/**
* @title IReflinkTrackerErrors
* @author Frax Finance
* @notice A collection of events used by the Flox Reflink system.
*/
contract IReflinkTrackerErrors {
/// Signifies that the arrays passed to the bulk function do not have the same length.
error ArrayLengthMissmatch();
/// Signifies that the referrer address passed is invalid.
error InvalidReferrerAddress();
/// Signifies that the user address passed is invalid.
error InvalidUserAddress();
/// Signifies that the caller is not a Flox contributor.
error NotFloxContributor();
/// Signifies that the caller is not the nominated owner.
error NotNominatedOwner();
/// Signifies that the caller is not the owner.
error NotOwner();
/// Signifies that the referral is already recorded for this user.
error ReferralAlreadyExists();
/// Signifies that the referral does not exist.
error ReferralDoesNotExist();
/// Signifies that the attempted status change is the same as the preexisting status.
error SameContributorStatus();
}{
"remappings": [
"frax-std/=lib/frax-standard-solidity/src/",
"@eth-optimism/=lib/optimism/packages/",
"lib/optimism/packages/contracts-bedrock:src/=lib/optimism/packages/contracts-bedrock/src/",
"src/=src/",
"@openzeppelin-4/=node_modules/@openzeppelin-4/",
"@openzeppelin-5/=node_modules/@openzeppelin-5/",
"@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/",
"optimism/=lib/optimism/",
"solidity-bytes-utils/=lib/frax-standard-solidity/lib/solidity-bytes-utils/"
],
"optimizer": {
"enabled": true,
"runs": 100000
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "cancun",
"viaIR": true,
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ArrayLengthMissmatch","type":"error"},{"inputs":[],"name":"InvalidReferrerAddress","type":"error"},{"inputs":[],"name":"InvalidUserAddress","type":"error"},{"inputs":[],"name":"NotFloxContributor","type":"error"},{"inputs":[],"name":"NotNominatedOwner","type":"error"},{"inputs":[],"name":"NotOwner","type":"error"},{"inputs":[],"name":"ReferralAlreadyExists","type":"error"},{"inputs":[],"name":"ReferralDoesNotExist","type":"error"},{"inputs":[],"name":"SameContributorStatus","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"contributor","type":"address"},{"indexed":false,"internalType":"bool","name":"isContributor","type":"bool"}],"name":"FloxContributorStatusUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerNominated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"referrer","type":"address"},{"indexed":true,"internalType":"address","name":"referee","type":"address"},{"indexed":false,"internalType":"uint64","name":"referrerPointsAwarded","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"userPointsAwarded","type":"uint64"}],"name":"ReferralAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousReferrer","type":"address"},{"indexed":true,"internalType":"address","name":"currentReferrer","type":"address"},{"indexed":true,"internalType":"address","name":"referee","type":"address"},{"indexed":false,"internalType":"uint64","name":"referrerPointsAwarded","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"userPointsAwarded","type":"uint64"}],"name":"ReferralUpdated","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"bytes32","name":"_bridgeTx","type":"bytes32"},{"internalType":"address","name":"_referrer","type":"address"},{"internalType":"uint128","name":"_timestamp","type":"uint128"},{"internalType":"uint64","name":"_userPointsAwarded","type":"uint64"},{"internalType":"uint64","name":"_referrerPointsAwarded","type":"uint64"}],"name":"addReferral","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_users","type":"address[]"},{"internalType":"bytes32[]","name":"_bridgeTxs","type":"bytes32[]"},{"internalType":"address[]","name":"_referrers","type":"address[]"},{"internalType":"uint128[]","name":"_timestamps","type":"uint128[]"},{"internalType":"uint64[]","name":"_userPointsAwarded","type":"uint64[]"},{"internalType":"uint64[]","name":"_referrerPointsAwarded","type":"uint64[]"}],"name":"bulkAddReferral","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_users","type":"address[]"},{"internalType":"bytes32[]","name":"_bridgeTxs","type":"bytes32[]"},{"internalType":"address[]","name":"_referrers","type":"address[]"},{"internalType":"uint128[]","name":"_timestamps","type":"uint128[]"},{"internalType":"uint64[]","name":"_userPointsAwarded","type":"uint64[]"},{"internalType":"uint64[]","name":"_referrerPointsAwarded","type":"uint64[]"}],"name":"bulkUpdateReferral","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contributor","type":"address"}],"name":"floxContributors","outputs":[{"internalType":"bool","name":"isContributor","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_contributor","type":"address"},{"internalType":"bool","name":"_isContributor","type":"bool"}],"name":"manageFloxContributors","outputs":[],"stateMutability":"nonpayable","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":"_user","type":"address"}],"name":"referralPointsAllocated","outputs":[{"internalType":"bool","name":"_allocated","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"referralSubmitted","outputs":[{"internalType":"bool","name":"_submitted","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"referrals","outputs":[{"internalType":"address","name":"referrer","type":"address"},{"internalType":"bytes32","name":"bridgeTx","type":"bytes32"},{"internalType":"uint128","name":"timestamp","type":"uint128"},{"internalType":"uint64","name":"pointsAwarded","type":"uint64"},{"internalType":"uint64","name":"referrerPointsAwarded","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"referrer","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"referrerUsers","outputs":[{"internalType":"address","name":"user","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"referrers","outputs":[{"internalType":"uint128","name":"referrals","type":"uint128"},{"internalType":"uint64","name":"pointsEarned","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_bridgeTx","type":"bytes32"},{"internalType":"address","name":"_referrer","type":"address"}],"name":"selfAddReferral","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalReferrals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"bytes32","name":"_bridgeTx","type":"bytes32"},{"internalType":"address","name":"_referrer","type":"address"},{"internalType":"uint128","name":"_timestamp","type":"uint128"},{"internalType":"uint64","name":"_userPointsAwarded","type":"uint64"},{"internalType":"uint64","name":"_referrerPointsAwarded","type":"uint64"}],"name":"updateReferral","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"users","outputs":[{"internalType":"address","name":"user","type":"address"}],"stateMutability":"view","type":"function"}]Contract Creation Code
608080604052346026575f80546001600160a01b03191633179055611a7d908161002b8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c9081631627540c14610cc957508063196f491414610c8e578063365b98b214610c305780634a3b68cc14610baa5780634fd9d1e014610b4257806353a47bb714610af15780636d3db8ec14610a895780636e8fe7dc146107ea57806379ba5097146106fc5780637e02bfb3146105d45780637eb8c6411461054f57806380dc2fd5146103ff5780638da5cb5b146103af578063941cc4ae1461033a5780639ca423b31461027c578063f30e6ec614610257578063fb9620ab146102305763fc403b7a146100e2575f80fd5b3461022c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022c57610119610d88565b6024359081151580920361022c5773ffffffffffffffffffffffffffffffffffffffff5f541633036102045773ffffffffffffffffffffffffffffffffffffffff1690815f5260026020528060ff60405f2054161515146101dc57816040917fac28464f2c28b0d7f4e568c4369262b204e12fb0a9b88c2f6295576c8e0734d5935f526002602052825f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff831617905582519182526020820152a1005b7fd31fc683000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f30cd7471000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f80fd5b3461022c57610255610241366110a4565b9461025094919493929361148c565b6114cb565b005b3461022c57610255610268366110a4565b9461027794919493929361148c565b6111f0565b3461022c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022c5773ffffffffffffffffffffffffffffffffffffffff6102c8610d88565b165f52600360205260a060405f2073ffffffffffffffffffffffffffffffffffffffff81541690600260018201549101549060405192835260208301526fffffffffffffffffffffffffffffffff8116604083015267ffffffffffffffff8160801c16606083015260c01c6080820152f35b3461022c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022c5773ffffffffffffffffffffffffffffffffffffffff610386610d88565b165f526003602052602067ffffffffffffffff600260405f20015460801c161515604051908152f35b3461022c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022c57602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b3461022c5761040d36610f0f565b9461041c94919493929361148c565b80518251811490811591610543575b8115610537575b811561052b575b811561051f575b506104f7575f5b81518110156102555761045a818361115d565b5173ffffffffffffffffffffffffffffffffffffffff1661047b828561115d565b51610486838761115d565b5173ffffffffffffffffffffffffffffffffffffffff166104a7848961115d565b516fffffffffffffffffffffffffffffffff166104c4858b61115d565b5167ffffffffffffffff16916104da868d61115d565b5167ffffffffffffffff16936104ef956114cb565b600101610447565b7f7f4415ae000000000000000000000000000000000000000000000000000000005f5260045ffd5b90508651141587610440565b86518114159150610439565b85518114159150610432565b8451811415915061042b565b3461022c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022c5773ffffffffffffffffffffffffffffffffffffffff61059b610d88565b165f52600560205260405f206024355f52602052602073ffffffffffffffffffffffffffffffffffffffff60405f205416604051908152f35b3461022c576105e236610f0f565b946105f194919493929361148c565b805182518114908115916106f0575b81156106e4575b81156106d8575b81156106cc575b506104f7575f5b81518110156102555761062f818361115d565b5173ffffffffffffffffffffffffffffffffffffffff16610650828561115d565b5161065b838761115d565b5173ffffffffffffffffffffffffffffffffffffffff1661067c848961115d565b516fffffffffffffffffffffffffffffffff16610699858b61115d565b5167ffffffffffffffff16916106af868d61115d565b5167ffffffffffffffff16936106c4956111f0565b60010161061c565b90508651141587610615565b8651811415915061060e565b85518114159150610607565b84518114159150610600565b3461022c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022c5760015473ffffffffffffffffffffffffffffffffffffffff81168033036107c2577fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c916040917fffffffffffffffffffffffff00000000000000000000000000000000000000005f549282828516175f551660015573ffffffffffffffffffffffffffffffffffffffff8351921682526020820152a1005b7fb1f6da50000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461022c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022c5760243573ffffffffffffffffffffffffffffffffffffffff811680910361022c573315610a61578015610a3957335f52600360205260405f20815f52600460205260405f2073ffffffffffffffffffffffffffffffffffffffff825416610a115781547fffffffffffffffffffffffff00000000000000000000000000000000000000009081168417835560043560018401556fffffffffffffffffffffffffffffffff4281166002909401939093555f84815260056020908152604080832085548716845282528083208054339086168117909155600754845260069092529091208054909216179055805461099e929061091690821661119e565b167fffffffffffffffffffffffffffffffff000000000000000000000000000000008254161781556109565f67ffffffffffffffff835460801c166111ce565b7fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff77ffffffffffffffff0000000000000000000000000000000083549260801b169116179055565b600754600181018091116109e457600755604051905f82525f60208301527f9582e2f379b1ce8359fab92c91654b16a9f6c787ae7c6c051abfeccbb868a0e660403393a3005b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7f9d999f0c000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f0aa59f6e000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f702b3d90000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461022c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022c5773ffffffffffffffffffffffffffffffffffffffff610ad5610d88565b165f5260036020526020600160405f2001541515604051908152f35b3461022c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022c57602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b3461022c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022c5773ffffffffffffffffffffffffffffffffffffffff610b8e610d88565b165f526002602052602060ff60405f2054166040519015158152f35b3461022c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022c5773ffffffffffffffffffffffffffffffffffffffff610bf6610d88565b165f5260046020526040805f205467ffffffffffffffff8251916fffffffffffffffffffffffffffffffff8116835260801c166020820152f35b3461022c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022c576004355f526006602052602073ffffffffffffffffffffffffffffffffffffffff60405f205416604051908152f35b3461022c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022c576020600754604051908152f35b3461022c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022c57610d00610d88565b73ffffffffffffffffffffffffffffffffffffffff5f54163303610204577f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229173ffffffffffffffffffffffffffffffffffffffff60209216807fffffffffffffffffffffffff000000000000000000000000000000000000000060015416176001558152a1005b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361022c57565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f604051930116820182811067ffffffffffffffff821117610def57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b67ffffffffffffffff8111610def5760051b60200190565b9080601f8301121561022c57813590610e54610e4f83610e1c565b610dab565b9260208085858152019360051b82010191821161022c57602001915b818310610e7d5750505090565b823573ffffffffffffffffffffffffffffffffffffffff8116810361022c57815260209283019201610e70565b9080601f8301121561022c57813590610ec5610e4f83610e1c565b9260208085858152019360051b82010191821161022c57602001915b818310610eee5750505090565b823567ffffffffffffffff8116810361022c57815260209283019201610ee1565b9060c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261022c5760043567ffffffffffffffff811161022c5782610f5991600401610e34565b9160243567ffffffffffffffff811161022c578160238201121561022c57806004013590610f89610e4f83610e1c565b916024602084838152019160051b8301019184831161022c57602401905b828210611094575050509160443567ffffffffffffffff811161022c5782610fd191600401610e34565b9160643567ffffffffffffffff811161022c578160238201121561022c578060040135611000610e4f82610e1c565b916024602084848152019260051b8201019084821161022c57602401915b81831061106b575050509160843567ffffffffffffffff811161022c578261104891600401610eaa565b9160a4359067ffffffffffffffff821161022c5761106891600401610eaa565b90565b82356fffffffffffffffffffffffffffffffff8116810361022c5781526020928301920161101e565b8135815260209182019101610fa7565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60c091011261022c5760043573ffffffffffffffffffffffffffffffffffffffff8116810361022c57906024359060443573ffffffffffffffffffffffffffffffffffffffff8116810361022c57906064356fffffffffffffffffffffffffffffffff8116810361022c579060843567ffffffffffffffff8116810361022c579060a43567ffffffffffffffff8116810361022c5790565b80518210156111715760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6fffffffffffffffffffffffffffffffff6001911601906fffffffffffffffffffffffffffffffff82116109e457565b9067ffffffffffffffff8091169116019067ffffffffffffffff82116109e457565b73ffffffffffffffffffffffffffffffffffffffff16949093909290918515610a615773ffffffffffffffffffffffffffffffffffffffff16938415610a3957855f52600360205260405f20855f52600460205260405f209173ffffffffffffffffffffffffffffffffffffffff825416610a115781547fffffffffffffffffffffffff00000000000000000000000000000000000000001687178255600182015560020180547fffffffffffffffff000000000000000000000000000000000000000000000000166fffffffffffffffffffffffffffffffff90931692909217608084901b77ffffffffffffffff000000000000000000000000000000001617825561142b916113479085905b9077ffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffff00000000000000000000000000000000000000000000000083549260c01b169116179055565b845f52600560205260405f206fffffffffffffffffffffffffffffffff8254165f5260205260405f20867fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790556007545f52600660205260405f20867fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790556fffffffffffffffffffffffffffffffff6113eb8183541661119e565b167fffffffffffffffffffffffffffffffff000000000000000000000000000000008254161781556109568467ffffffffffffffff835460801c166111ce565b60075491600183018093116109e4577f9582e2f379b1ce8359fab92c91654b16a9f6c787ae7c6c051abfeccbb868a0e6926007556114876040519283928390929167ffffffffffffffff60209181604085019616845216910152565b0390a3565b335f52600260205260ff60405f205416156114a357565b7f6b697ed1000000000000000000000000000000000000000000000000000000005f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff16938415610a6157845f52600360205260405f209573ffffffffffffffffffffffffffffffffffffffff875416938415611a1f5773ffffffffffffffffffffffffffffffffffffffff811615611a18575b73ffffffffffffffffffffffffffffffffffffffff1694855f52600460205260405f209380611a0d575b506fffffffffffffffffffffffffffffffff81166119c9575b5067ffffffffffffffff8216156119b0575b67ffffffffffffffff8116156119a2575b67ffffffffffffffff81166118af575b5067ffffffffffffffff8116611858575b50828203611641575b5083547fffffffffffffffffffffffff000000000000000000000000000000000000000016821784556002909301546040805160c083901c815260809290921c67ffffffffffffffff166020830152929391927fa42cf7282089eb14852e1c8a7a62d043d83a2e02bacadf651125b2a54dbfc5d49190819081015b0390a4565b5f945f5b835f5260046020526fffffffffffffffffffffffffffffffff60405f20541681101561184c57835f52600560205260405f20815f526020528573ffffffffffffffffffffffffffffffffffffffff60405f205416146116a657600101611645565b90919293949550915b835f52600460205260405f20917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6fffffffffffffffffffffffffffffffff84541601916fffffffffffffffffffffffffffffffff83116109e45783546fffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffffffffffff00000000000000000000000000000000909116179093555f8581526005602081815260408084206004835281852080548816865290835281852054988552818520805473ffffffffffffffffffffffffffffffffffffffff909a167fffffffffffffffffffffffff00000000000000000000000000000000000000009a8b161790555486168452808420805489169055898452918152818320865486168452905290208054909416871790935581547fa42cf7282089eb14852e1c8a7a62d043d83a2e02bacadf651125b2a54dbfc5d49361163c93600293919290919061181990821661119e565b167fffffffffffffffffffffffffffffffff000000000000000000000000000000008254161790559594939250506115c1565b509094919293946116af565b6118a99060028701907fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff77ffffffffffffffff0000000000000000000000000000000083549260801b169116179055565b5f6115b8565b60028701805460c01c91855f52600460205260405f209267ffffffffffffffff845460801c16039267ffffffffffffffff84116109e45781611953936112fe61199c9661193f94907fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff77ffffffffffffffff0000000000000000000000000000000083549260801b169116179055565b67ffffffffffffffff855460801c166111ce565b83547fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1660809190911b77ffffffffffffffff0000000000000000000000000000000016178355565b5f6115a7565b50600286015460c01c611597565b600287015460801c67ffffffffffffffff169150611586565b6fffffffffffffffffffffffffffffffff6002890191167fffffffffffffffffffffffffffffffff000000000000000000000000000000008254161790555f611574565b60018901555f61155b565b5083611531565b7fe529d84f000000000000000000000000000000000000000000000000000000005f5260045ffdfea264697066735822122046d22e1e6c6d461004850c52a4e074cbbe9a323e9be8dbfc4887f5f91c99b74464736f6c634300081a0033
Deployed Bytecode
0x6080806040526004361015610012575f80fd5b5f3560e01c9081631627540c14610cc957508063196f491414610c8e578063365b98b214610c305780634a3b68cc14610baa5780634fd9d1e014610b4257806353a47bb714610af15780636d3db8ec14610a895780636e8fe7dc146107ea57806379ba5097146106fc5780637e02bfb3146105d45780637eb8c6411461054f57806380dc2fd5146103ff5780638da5cb5b146103af578063941cc4ae1461033a5780639ca423b31461027c578063f30e6ec614610257578063fb9620ab146102305763fc403b7a146100e2575f80fd5b3461022c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022c57610119610d88565b6024359081151580920361022c5773ffffffffffffffffffffffffffffffffffffffff5f541633036102045773ffffffffffffffffffffffffffffffffffffffff1690815f5260026020528060ff60405f2054161515146101dc57816040917fac28464f2c28b0d7f4e568c4369262b204e12fb0a9b88c2f6295576c8e0734d5935f526002602052825f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff831617905582519182526020820152a1005b7fd31fc683000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f30cd7471000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f80fd5b3461022c57610255610241366110a4565b9461025094919493929361148c565b6114cb565b005b3461022c57610255610268366110a4565b9461027794919493929361148c565b6111f0565b3461022c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022c5773ffffffffffffffffffffffffffffffffffffffff6102c8610d88565b165f52600360205260a060405f2073ffffffffffffffffffffffffffffffffffffffff81541690600260018201549101549060405192835260208301526fffffffffffffffffffffffffffffffff8116604083015267ffffffffffffffff8160801c16606083015260c01c6080820152f35b3461022c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022c5773ffffffffffffffffffffffffffffffffffffffff610386610d88565b165f526003602052602067ffffffffffffffff600260405f20015460801c161515604051908152f35b3461022c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022c57602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b3461022c5761040d36610f0f565b9461041c94919493929361148c565b80518251811490811591610543575b8115610537575b811561052b575b811561051f575b506104f7575f5b81518110156102555761045a818361115d565b5173ffffffffffffffffffffffffffffffffffffffff1661047b828561115d565b51610486838761115d565b5173ffffffffffffffffffffffffffffffffffffffff166104a7848961115d565b516fffffffffffffffffffffffffffffffff166104c4858b61115d565b5167ffffffffffffffff16916104da868d61115d565b5167ffffffffffffffff16936104ef956114cb565b600101610447565b7f7f4415ae000000000000000000000000000000000000000000000000000000005f5260045ffd5b90508651141587610440565b86518114159150610439565b85518114159150610432565b8451811415915061042b565b3461022c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022c5773ffffffffffffffffffffffffffffffffffffffff61059b610d88565b165f52600560205260405f206024355f52602052602073ffffffffffffffffffffffffffffffffffffffff60405f205416604051908152f35b3461022c576105e236610f0f565b946105f194919493929361148c565b805182518114908115916106f0575b81156106e4575b81156106d8575b81156106cc575b506104f7575f5b81518110156102555761062f818361115d565b5173ffffffffffffffffffffffffffffffffffffffff16610650828561115d565b5161065b838761115d565b5173ffffffffffffffffffffffffffffffffffffffff1661067c848961115d565b516fffffffffffffffffffffffffffffffff16610699858b61115d565b5167ffffffffffffffff16916106af868d61115d565b5167ffffffffffffffff16936106c4956111f0565b60010161061c565b90508651141587610615565b8651811415915061060e565b85518114159150610607565b84518114159150610600565b3461022c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022c5760015473ffffffffffffffffffffffffffffffffffffffff81168033036107c2577fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c916040917fffffffffffffffffffffffff00000000000000000000000000000000000000005f549282828516175f551660015573ffffffffffffffffffffffffffffffffffffffff8351921682526020820152a1005b7fb1f6da50000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461022c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022c5760243573ffffffffffffffffffffffffffffffffffffffff811680910361022c573315610a61578015610a3957335f52600360205260405f20815f52600460205260405f2073ffffffffffffffffffffffffffffffffffffffff825416610a115781547fffffffffffffffffffffffff00000000000000000000000000000000000000009081168417835560043560018401556fffffffffffffffffffffffffffffffff4281166002909401939093555f84815260056020908152604080832085548716845282528083208054339086168117909155600754845260069092529091208054909216179055805461099e929061091690821661119e565b167fffffffffffffffffffffffffffffffff000000000000000000000000000000008254161781556109565f67ffffffffffffffff835460801c166111ce565b7fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff77ffffffffffffffff0000000000000000000000000000000083549260801b169116179055565b600754600181018091116109e457600755604051905f82525f60208301527f9582e2f379b1ce8359fab92c91654b16a9f6c787ae7c6c051abfeccbb868a0e660403393a3005b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7f9d999f0c000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f0aa59f6e000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f702b3d90000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461022c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022c5773ffffffffffffffffffffffffffffffffffffffff610ad5610d88565b165f5260036020526020600160405f2001541515604051908152f35b3461022c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022c57602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b3461022c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022c5773ffffffffffffffffffffffffffffffffffffffff610b8e610d88565b165f526002602052602060ff60405f2054166040519015158152f35b3461022c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022c5773ffffffffffffffffffffffffffffffffffffffff610bf6610d88565b165f5260046020526040805f205467ffffffffffffffff8251916fffffffffffffffffffffffffffffffff8116835260801c166020820152f35b3461022c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022c576004355f526006602052602073ffffffffffffffffffffffffffffffffffffffff60405f205416604051908152f35b3461022c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022c576020600754604051908152f35b3461022c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022c57610d00610d88565b73ffffffffffffffffffffffffffffffffffffffff5f54163303610204577f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229173ffffffffffffffffffffffffffffffffffffffff60209216807fffffffffffffffffffffffff000000000000000000000000000000000000000060015416176001558152a1005b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361022c57565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f604051930116820182811067ffffffffffffffff821117610def57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b67ffffffffffffffff8111610def5760051b60200190565b9080601f8301121561022c57813590610e54610e4f83610e1c565b610dab565b9260208085858152019360051b82010191821161022c57602001915b818310610e7d5750505090565b823573ffffffffffffffffffffffffffffffffffffffff8116810361022c57815260209283019201610e70565b9080601f8301121561022c57813590610ec5610e4f83610e1c565b9260208085858152019360051b82010191821161022c57602001915b818310610eee5750505090565b823567ffffffffffffffff8116810361022c57815260209283019201610ee1565b9060c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261022c5760043567ffffffffffffffff811161022c5782610f5991600401610e34565b9160243567ffffffffffffffff811161022c578160238201121561022c57806004013590610f89610e4f83610e1c565b916024602084838152019160051b8301019184831161022c57602401905b828210611094575050509160443567ffffffffffffffff811161022c5782610fd191600401610e34565b9160643567ffffffffffffffff811161022c578160238201121561022c578060040135611000610e4f82610e1c565b916024602084848152019260051b8201019084821161022c57602401915b81831061106b575050509160843567ffffffffffffffff811161022c578261104891600401610eaa565b9160a4359067ffffffffffffffff821161022c5761106891600401610eaa565b90565b82356fffffffffffffffffffffffffffffffff8116810361022c5781526020928301920161101e565b8135815260209182019101610fa7565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60c091011261022c5760043573ffffffffffffffffffffffffffffffffffffffff8116810361022c57906024359060443573ffffffffffffffffffffffffffffffffffffffff8116810361022c57906064356fffffffffffffffffffffffffffffffff8116810361022c579060843567ffffffffffffffff8116810361022c579060a43567ffffffffffffffff8116810361022c5790565b80518210156111715760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6fffffffffffffffffffffffffffffffff6001911601906fffffffffffffffffffffffffffffffff82116109e457565b9067ffffffffffffffff8091169116019067ffffffffffffffff82116109e457565b73ffffffffffffffffffffffffffffffffffffffff16949093909290918515610a615773ffffffffffffffffffffffffffffffffffffffff16938415610a3957855f52600360205260405f20855f52600460205260405f209173ffffffffffffffffffffffffffffffffffffffff825416610a115781547fffffffffffffffffffffffff00000000000000000000000000000000000000001687178255600182015560020180547fffffffffffffffff000000000000000000000000000000000000000000000000166fffffffffffffffffffffffffffffffff90931692909217608084901b77ffffffffffffffff000000000000000000000000000000001617825561142b916113479085905b9077ffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffff00000000000000000000000000000000000000000000000083549260c01b169116179055565b845f52600560205260405f206fffffffffffffffffffffffffffffffff8254165f5260205260405f20867fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790556007545f52600660205260405f20867fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790556fffffffffffffffffffffffffffffffff6113eb8183541661119e565b167fffffffffffffffffffffffffffffffff000000000000000000000000000000008254161781556109568467ffffffffffffffff835460801c166111ce565b60075491600183018093116109e4577f9582e2f379b1ce8359fab92c91654b16a9f6c787ae7c6c051abfeccbb868a0e6926007556114876040519283928390929167ffffffffffffffff60209181604085019616845216910152565b0390a3565b335f52600260205260ff60405f205416156114a357565b7f6b697ed1000000000000000000000000000000000000000000000000000000005f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff16938415610a6157845f52600360205260405f209573ffffffffffffffffffffffffffffffffffffffff875416938415611a1f5773ffffffffffffffffffffffffffffffffffffffff811615611a18575b73ffffffffffffffffffffffffffffffffffffffff1694855f52600460205260405f209380611a0d575b506fffffffffffffffffffffffffffffffff81166119c9575b5067ffffffffffffffff8216156119b0575b67ffffffffffffffff8116156119a2575b67ffffffffffffffff81166118af575b5067ffffffffffffffff8116611858575b50828203611641575b5083547fffffffffffffffffffffffff000000000000000000000000000000000000000016821784556002909301546040805160c083901c815260809290921c67ffffffffffffffff166020830152929391927fa42cf7282089eb14852e1c8a7a62d043d83a2e02bacadf651125b2a54dbfc5d49190819081015b0390a4565b5f945f5b835f5260046020526fffffffffffffffffffffffffffffffff60405f20541681101561184c57835f52600560205260405f20815f526020528573ffffffffffffffffffffffffffffffffffffffff60405f205416146116a657600101611645565b90919293949550915b835f52600460205260405f20917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6fffffffffffffffffffffffffffffffff84541601916fffffffffffffffffffffffffffffffff83116109e45783546fffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffffffffffff00000000000000000000000000000000909116179093555f8581526005602081815260408084206004835281852080548816865290835281852054988552818520805473ffffffffffffffffffffffffffffffffffffffff909a167fffffffffffffffffffffffff00000000000000000000000000000000000000009a8b161790555486168452808420805489169055898452918152818320865486168452905290208054909416871790935581547fa42cf7282089eb14852e1c8a7a62d043d83a2e02bacadf651125b2a54dbfc5d49361163c93600293919290919061181990821661119e565b167fffffffffffffffffffffffffffffffff000000000000000000000000000000008254161790559594939250506115c1565b509094919293946116af565b6118a99060028701907fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff77ffffffffffffffff0000000000000000000000000000000083549260801b169116179055565b5f6115b8565b60028701805460c01c91855f52600460205260405f209267ffffffffffffffff845460801c16039267ffffffffffffffff84116109e45781611953936112fe61199c9661193f94907fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff77ffffffffffffffff0000000000000000000000000000000083549260801b169116179055565b67ffffffffffffffff855460801c166111ce565b83547fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1660809190911b77ffffffffffffffff0000000000000000000000000000000016178355565b5f6115a7565b50600286015460c01c611597565b600287015460801c67ffffffffffffffff169150611586565b6fffffffffffffffffffffffffffffffff6002890191167fffffffffffffffffffffffffffffffff000000000000000000000000000000008254161790555f611574565b60018901555f61155b565b5083611531565b7fe529d84f000000000000000000000000000000000000000000000000000000005f5260045ffdfea264697066735822122046d22e1e6c6d461004850c52a4e074cbbe9a323e9be8dbfc4887f5f91c99b74464736f6c634300081a0033
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.