Source Code
Overview
S Balance
S Value
$0.00Latest 1 from a total of 1 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Deploy And Migra... | 56842759 | 56 days ago | IN | 0 S | 0.04667634 |
Latest 2 internal transactions
Advanced mode:
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 56842759 | 56 days ago | Contract Creation | 0 S | |||
| 56842074 | 56 days ago | Contract Creation | 0 S |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
ConstantsMigrator
Compiler Version
v0.8.27+commit.40a35a09
Optimization Enabled:
Yes with 200 runs
Other Settings:
cancun EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.27;
import {ISFC} from "../interfaces/ISFC.sol";
import {ConstantsManager} from "./ConstantsManager.sol";
import {Decimal} from "../common/Decimal.sol";
/**
* @custom:security-contact [email protected]
*/
contract ConstantsMigrator {
event MigratedTo(address target);
function deployAndMigrate(address _sfc) external {
// prep the source and target contracts
ConstantsManager source = ConstantsManager(ISFC(_sfc).constsAddress());
ConstantsManager target = new ConstantsManager(address(this));
// transfer the current values
target.updateMinSelfStake(source.minSelfStake());
target.updateMaxDelegatedRatio(source.maxDelegatedRatio());
target.updateValidatorCommission(source.validatorCommission());
target.updateBurntFeeShare(source.burntFeeShare());
target.updateTreasuryFeeShare(source.treasuryFeeShare());
target.updateWithdrawalPeriodEpochs(source.withdrawalPeriodEpochs());
target.updateWithdrawalPeriodTime(source.withdrawalPeriodTime());
target.updateBaseRewardPerSecond(source.baseRewardPerSecond());
target.updateOfflinePenaltyThresholdTime(source.offlinePenaltyThresholdTime());
target.updateOfflinePenaltyThresholdBlocksNum(source.offlinePenaltyThresholdBlocksNum());
target.updateAverageUptimeEpochWindow(source.averageUptimeEpochWindow());
target.updateMinAverageUptime(source.minAverageUptime());
target.updateIssuedTokensRecipient(source.issuedTokensRecipient());
// set the newly added constants to their default values
// these are not expected to be present in the previous contract version and can not be transferred
target.updateExtraRewardsBurnRatio((50 * Decimal.unit()) / 100); // defaults to 50% burn
// pass the new constants contract ownership to mirror the source
target.transferOwnership(source.owner());
emit MigratedTo(address(target));
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)
pragma solidity ^0.8.20;
import {Context} from "../utils/Context.sol";
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* The initial owner is set to the address provided by the deployer. This can
* later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
/**
* @dev The caller account is not authorized to perform an operation.
*/
error OwnableUnauthorizedAccount(address account);
/**
* @dev The owner is not a valid owner account. (eg. `address(0)`)
*/
error OwnableInvalidOwner(address owner);
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the address provided by the deployer as the initial owner.
*/
constructor(address initialOwner) {
if (initialOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(initialOwner);
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
if (owner() != _msgSender()) {
revert OwnableUnauthorizedAccount(_msgSender());
}
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby disabling any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
if (newOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)
pragma solidity ^0.8.20;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
function _contextSuffixLength() internal view virtual returns (uint256) {
return 0;
}
}// SPDX-License-Identifier: UNLICENSED pragma solidity 0.8.27; /** * @custom:security-contact [email protected] */ library Decimal { // unit is used for decimals, e.g. 0.123456 function unit() internal pure returns (uint256) { return 1e18; } }
// SPDX-License-Identifier: UNLICENSED pragma solidity 0.8.27; /** * @title Special Fee Contract for Sonic network * @notice The SFC maintains a list of validators and delegators and distributes rewards to them. * @custom:security-contact [email protected] */ interface ISFC { event CreatedValidator( uint256 indexed validatorID, address indexed auth, uint256 createdEpoch, uint256 createdTime ); event Delegated(address indexed delegator, uint256 indexed toValidatorID, uint256 amount); event Undelegated(address indexed delegator, uint256 indexed toValidatorID, uint256 indexed wrID, uint256 amount); event Withdrawn( address indexed delegator, uint256 indexed toValidatorID, uint256 indexed wrID, uint256 amount, uint256 penalty ); event ClaimedRewards(address indexed delegator, uint256 indexed toValidatorID, uint256 rewards); event RestakedRewards(address indexed delegator, uint256 indexed toValidatorID, uint256 rewards); event BurntFTM(uint256 amount); event UpdatedSlashingRefundRatio(uint256 indexed validatorID, uint256 refundRatio); event RefundedSlashedLegacyDelegation(address indexed delegator, uint256 indexed validatorID, uint256 amount); event DeactivatedValidator(uint256 indexed validatorID, uint256 deactivatedEpoch, uint256 deactivatedTime); event ChangedValidatorStatus(uint256 indexed validatorID, uint256 status); event AnnouncedRedirection(address indexed from, address indexed to); function currentSealedEpoch() external view returns (uint256); function getEpochSnapshot( uint256 ) external view returns ( uint256 endTime, uint256 endBlock, uint256 epochFee, uint256 baseRewardPerSecond, uint256 totalStake, uint256 totalSupply ); function getStake(address, uint256) external view returns (uint256); function getValidator( uint256 ) external view returns ( uint256 status, uint256 receivedStake, address auth, uint256 createdEpoch, uint256 createdTime, uint256 deactivatedTime, uint256 deactivatedEpoch ); function getValidatorID(address) external view returns (uint256); function getValidatorPubkey(uint256) external view returns (bytes memory); function pubkeyAddressToValidatorID(address pubkeyAddress) external view returns (uint256); function getWithdrawalRequest( address, uint256, uint256 ) external view returns (uint256 epoch, uint256 time, uint256 amount); function isOwner() external view returns (bool); function lastValidatorID() external view returns (uint256); function minGasPrice() external view returns (uint256); function owner() external view returns (address); function renounceOwnership() external; function slashingRefundRatio(uint256) external view returns (uint256); function stashedRewardsUntilEpoch(address, uint256) external view returns (uint256); function totalActiveStake() external view returns (uint256); function totalStake() external view returns (uint256); function totalSupply() external view returns (uint256); function transferOwnership(address newOwner) external; function treasuryAddress() external view returns (address); function version() external pure returns (bytes3); function currentEpoch() external view returns (uint256); function updateConstsAddress(address v) external; function constsAddress() external view returns (address); function getEpochValidatorIDs(uint256 epoch) external view returns (uint256[] memory); function getEpochReceivedStake(uint256 epoch, uint256 validatorID) external view returns (uint256); function getEpochAccumulatedRewardPerToken(uint256 epoch, uint256 validatorID) external view returns (uint256); function getEpochAccumulatedUptime(uint256 epoch, uint256 validatorID) external view returns (uint256); function getEpochAverageUptime(uint256 epoch, uint256 validatorID) external view returns (uint32); function getEpochAccumulatedOriginatedTxsFee(uint256 epoch, uint256 validatorID) external view returns (uint256); function getEpochOfflineTime(uint256 epoch, uint256 validatorID) external view returns (uint256); function getEpochOfflineBlocks(uint256 epoch, uint256 validatorID) external view returns (uint256); function getEpochEndBlock(uint256 epoch) external view returns (uint256); function epochEndTime(uint256 epoch) external view returns (uint256); function rewardsStash(address delegator, uint256 validatorID) external view returns (uint256); function createValidator(bytes calldata pubkey) external payable; function getSelfStake(uint256 validatorID) external view returns (uint256); function delegate(uint256 toValidatorID) external payable; function undelegate(uint256 toValidatorID, uint256 wrID, uint256 amount) external; function isSlashed(uint256 validatorID) external view returns (bool); function withdraw(uint256 toValidatorID, uint256 wrID) external; function deactivateValidator(uint256 validatorID, uint256 status) external; function pendingRewards(address delegator, uint256 toValidatorID) external view returns (uint256); function stashRewards(address delegator, uint256 toValidatorID) external; function claimRewards(uint256 toValidatorID) external; function restakeRewards(uint256 toValidatorID) external; function updateSlashingRefundRatio(uint256 validatorID, uint256 refundRatio) external; function updateTreasuryAddress(address v) external; function burnNativeTokens() external payable; function sealEpoch( uint256[] calldata offlineTime, uint256[] calldata offlineBlocks, uint256[] calldata uptimes, uint256[] calldata originatedTxsFee ) external; function sealEpochValidators(uint256[] calldata nextValidatorIDs) external; function initialize( uint256 sealedEpoch, uint256 _totalSupply, address nodeDriver, address consts, address _owner ) external; function setGenesisValidator( address auth, uint256 validatorID, bytes calldata pubkey, uint256 createdTime ) external; function setGenesisDelegation(address delegator, uint256 toValidatorID, uint256 stake) external; function updateStakeSubscriberAddress(address v) external; function stakeSubscriberAddress() external view returns (address); function setRedirectionAuthorizer(address v) external; function announceRedirection(address to) external; function initiateRedirection(address from, address to) external; function redirect(address to) external; }
// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.27;
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
import {Decimal} from "../common/Decimal.sol";
/**
* @custom:security-contact [email protected]
*/
contract ConstantsManager is Ownable {
// Minimum amount of stake for a validator, i.e., 500000 FTM
uint256 public minSelfStake;
// Maximum ratio of delegations a validator can have, say, 15 times of self-stake
uint256 public maxDelegatedRatio;
// The commission fee in percentage a validator will get from a delegation, e.g., 15%
uint256 public validatorCommission;
// The percentage of fees to burn, e.g., 20%
uint256 public burntFeeShare;
// The percentage of fees to transfer to treasury address, e.g., 10%
uint256 public treasuryFeeShare;
// The percentage of extra rewards to be burned, e.g. 60%
uint256 public extraRewardsBurnRatio;
// the number of epochs that undelegated stake is locked for
uint256 public withdrawalPeriodEpochs;
// the number of seconds that undelegated stake is locked for
uint256 public withdrawalPeriodTime;
// The max amount of rewards released by the network to its stakers every second
uint256 public baseRewardPerSecond;
// The max number of consecutive confirmed blocks a validator can be inactive before irreversibly deactivated
uint256 public offlinePenaltyThresholdBlocksNum;
// The max number of seconds a validator can be inactive before irreversibly deactivated
uint256 public offlinePenaltyThresholdTime;
// The number of epochs to calculate the average uptime ratio from, acceptable bound [10, 87600].
// Is also the minimum number of epochs necessary for deactivation of offline validators.
uint32 public averageUptimeEpochWindow;
// Minimum average uptime ratio in fixed-point format; acceptable bounds [0,0.9].
// Zero to disable validators deactivation by this metric.
uint64 public minAverageUptime;
// The address of the recipient that receives issued tokens
// as a counterparty to the burnt S tokens
address public issuedTokensRecipient;
/**
* @dev Given value is too small
*/
error ValueTooSmall();
/**
* @dev Given value is too large
*/
error ValueTooLarge();
constructor(address owner) Ownable(owner) {}
function updateMinSelfStake(uint256 v) external virtual onlyOwner {
if (v < 100000 * Decimal.unit()) {
revert ValueTooSmall();
}
if (v > 10000000 * Decimal.unit()) {
revert ValueTooLarge();
}
minSelfStake = v;
}
function updateMaxDelegatedRatio(uint256 v) external onlyOwner {
if (v < Decimal.unit()) {
revert ValueTooSmall();
}
if (v > 31 * Decimal.unit()) {
revert ValueTooLarge();
}
maxDelegatedRatio = v;
}
function updateValidatorCommission(uint256 v) external onlyOwner {
if (v > Decimal.unit() / 2) {
revert ValueTooLarge();
}
validatorCommission = v;
}
function updateBurntFeeShare(uint256 v) external onlyOwner {
if (v + treasuryFeeShare > Decimal.unit()) {
revert ValueTooLarge();
}
burntFeeShare = v;
}
function updateTreasuryFeeShare(uint256 v) external onlyOwner {
if (v + burntFeeShare > Decimal.unit()) {
revert ValueTooLarge();
}
treasuryFeeShare = v;
}
function updateExtraRewardsBurnRatio(uint256 v) external virtual onlyOwner {
if (v > Decimal.unit()) {
revert ValueTooLarge();
}
extraRewardsBurnRatio = v;
}
function updateWithdrawalPeriodEpochs(uint256 v) external onlyOwner {
if (v < 2) {
revert ValueTooSmall();
}
if (v > 100) {
revert ValueTooLarge();
}
withdrawalPeriodEpochs = v;
}
function updateWithdrawalPeriodTime(uint256 v) external onlyOwner {
if (v < 3600) {
revert ValueTooSmall();
}
if (v > 30 * 86400) {
revert ValueTooLarge();
}
withdrawalPeriodTime = v;
}
function updateBaseRewardPerSecond(uint256 v) external virtual onlyOwner {
if (v > 32 * Decimal.unit()) {
revert ValueTooLarge();
}
baseRewardPerSecond = v;
}
function updateOfflinePenaltyThresholdTime(uint256 v) external virtual onlyOwner {
if (v < 86400) {
revert ValueTooSmall();
}
if (v > 10 * 86400) {
revert ValueTooLarge();
}
offlinePenaltyThresholdTime = v;
}
function updateOfflinePenaltyThresholdBlocksNum(uint256 v) external onlyOwner {
if (v < 100) {
revert ValueTooSmall();
}
if (v > 1000000) {
revert ValueTooLarge();
}
offlinePenaltyThresholdBlocksNum = v;
}
function updateAverageUptimeEpochWindow(uint32 v) external onlyOwner {
if (v < 10) {
// needs to be long enough to allow permissible downtime for validators maintenance
revert ValueTooSmall();
}
if (v > 87600) {
revert ValueTooLarge();
}
averageUptimeEpochWindow = v;
}
function updateMinAverageUptime(uint64 v) external onlyOwner {
if (v > ((Decimal.unit() * 9) / 10)) {
revert ValueTooLarge();
}
minAverageUptime = v;
}
function updateIssuedTokensRecipient(address v) external onlyOwner {
issuedTokensRecipient = v;
}
}{
"evmVersion": "cancun",
"optimizer": {
"enabled": true,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"target","type":"address"}],"name":"MigratedTo","type":"event"},{"inputs":[{"internalType":"address","name":"_sfc","type":"address"}],"name":"deployAndMigrate","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
6080604052348015600e575f5ffd5b506118bd8061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610029575f3560e01c8063a40973061461002d575b5f5ffd5b61004061003b366004610c13565b610042565b005b5f816001600160a01b031663d46fa5186040518163ffffffff1660e01b8152600401602060405180830381865afa15801561007f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100a39190610c35565b90505f306040516100b390610bef565b6001600160a01b039091168152602001604051809103905ff0801580156100dc573d5f5f3e3d5ffd5b509050806001600160a01b031663866c4b17836001600160a01b031663c5f530af6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561012a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061014e9190610c50565b6040518263ffffffff1660e01b815260040161016c91815260200190565b5f604051808303815f87803b158015610183575f5ffd5b505af1158015610195573d5f5f3e3d5ffd5b50505050806001600160a01b03166381ffcdf1836001600160a01b0316632265f2846040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101e4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102089190610c50565b6040518263ffffffff1660e01b815260040161022691815260200190565b5f604051808303815f87803b15801561023d575f5ffd5b505af115801561024f573d5f5f3e3d5ffd5b50505050806001600160a01b0316632ee71132836001600160a01b031663a77865156040518163ffffffff1660e01b8152600401602060405180830381865afa15801561029e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102c29190610c50565b6040518263ffffffff1660e01b81526004016102e091815260200190565b5f604051808303815f87803b1580156102f7575f5ffd5b505af1158015610309573d5f5f3e3d5ffd5b50505050806001600160a01b0316632bb9fe8d836001600160a01b031663c74dd6216040518163ffffffff1660e01b8152600401602060405180830381865afa158015610358573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061037c9190610c50565b6040518263ffffffff1660e01b815260040161039a91815260200190565b5f604051808303815f87803b1580156103b1575f5ffd5b505af11580156103c3573d5f5f3e3d5ffd5b50505050806001600160a01b031663f8d5177e836001600160a01b03166394c3e9146040518163ffffffff1660e01b8152600401602060405180830381865afa158015610412573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104369190610c50565b6040518263ffffffff1660e01b815260040161045491815260200190565b5f604051808303815f87803b15801561046b575f5ffd5b505af115801561047d573d5f5f3e3d5ffd5b50505050806001600160a01b0316638f078bfa836001600160a01b031663650acd666040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104cc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104f09190610c50565b6040518263ffffffff1660e01b815260040161050e91815260200190565b5f604051808303815f87803b158015610525575f5ffd5b505af1158015610537573d5f5f3e3d5ffd5b50505050806001600160a01b031663455366a4836001600160a01b031663b82b84276040518163ffffffff1660e01b8152600401602060405180830381865afa158015610586573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105aa9190610c50565b6040518263ffffffff1660e01b81526004016105c891815260200190565b5f604051808303815f87803b1580156105df575f5ffd5b505af11580156105f1573d5f5f3e3d5ffd5b50505050806001600160a01b031663b6d9edd5836001600160a01b031663d9a7c1f96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610640573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106649190610c50565b6040518263ffffffff1660e01b815260040161068291815260200190565b5f604051808303815f87803b158015610699575f5ffd5b505af11580156106ab573d5f5f3e3d5ffd5b50505050806001600160a01b0316636348ebb8836001600160a01b031662cc7f836040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106f9573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061071d9190610c50565b6040518263ffffffff1660e01b815260040161073b91815260200190565b5f604051808303815f87803b158015610752575f5ffd5b505af1158015610764573d5f5f3e3d5ffd5b50505050806001600160a01b0316632e84e8e6836001600160a01b0316635a68f01a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107b3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107d79190610c50565b6040518263ffffffff1660e01b81526004016107f591815260200190565b5f604051808303815f87803b15801561080c575f5ffd5b505af115801561081e573d5f5f3e3d5ffd5b50505050806001600160a01b031663256dc572836001600160a01b0316633fa225486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561086d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108919190610c67565b6040516001600160e01b031960e084901b16815263ffffffff9190911660048201526024015f604051808303815f87803b1580156108cd575f5ffd5b505af11580156108df573d5f5f3e3d5ffd5b50505050806001600160a01b031663165e2639836001600160a01b0316631c2543376040518163ffffffff1660e01b8152600401602060405180830381865afa15801561092e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109529190610c8a565b6040516001600160e01b031960e084901b16815267ffffffffffffffff90911660048201526024015f604051808303815f87803b158015610991575f5ffd5b505af11580156109a3573d5f5f3e3d5ffd5b50505050806001600160a01b031663754e92e3836001600160a01b03166375840fab6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109f2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a169190610c35565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024015f604051808303815f87803b158015610a54575f5ffd5b505af1158015610a66573d5f5f3e3d5ffd5b50505050806001600160a01b031663230ec5f76064610a8a670de0b6b3a764000090565b610a95906032610cb1565b610a9f9190610cda565b6040518263ffffffff1660e01b8152600401610abd91815260200190565b5f604051808303815f87803b158015610ad4575f5ffd5b505af1158015610ae6573d5f5f3e3d5ffd5b50505050806001600160a01b031663f2fde38b836001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b35573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b599190610c35565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024015f604051808303815f87803b158015610b97575f5ffd5b505af1158015610ba9573d5f5f3e3d5ffd5b50506040516001600160a01b03841681527fd3fa187f7d4d0b967597fd8a933f05245448678338df3bc4639abdc6087185409250602001905060405180910390a1505050565b610b8e80610cfa83390190565b6001600160a01b0381168114610c10575f5ffd5b50565b5f60208284031215610c23575f5ffd5b8135610c2e81610bfc565b9392505050565b5f60208284031215610c45575f5ffd5b8151610c2e81610bfc565b5f60208284031215610c60575f5ffd5b5051919050565b5f60208284031215610c77575f5ffd5b815163ffffffff81168114610c2e575f5ffd5b5f60208284031215610c9a575f5ffd5b815167ffffffffffffffff81168114610c2e575f5ffd5b8082028115828204841417610cd457634e487b7160e01b5f52601160045260245ffd5b92915050565b5f82610cf457634e487b7160e01b5f52601260045260245ffd5b50049056fe6080604052348015600e575f5ffd5b50604051610b8e380380610b8e833981016040819052602b9160b4565b806001600160a01b038116605857604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b605f816065565b505060df565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f6020828403121560c3575f5ffd5b81516001600160a01b038116811460d8575f5ffd5b9392505050565b610aa2806100ec5f395ff3fe608060405234801561000f575f5ffd5b50600436106101db575f3560e01c8063754e92e311610109578063b6d9edd51161009e578063d475aa941161006e578063d475aa94146103e0578063d9a7c1f9146103e9578063f2fde38b146103f2578063f8d5177e14610405575f5ffd5b8063b6d9edd5146103b2578063b82b8427146103c5578063c5f530af146103ce578063c74dd621146103d7575f5ffd5b80638da5cb5b116100d95780638da5cb5b1461037d5780638f078bfa1461038d57806394c3e914146103a0578063a7786515146103a9575f5ffd5b8063754e92e31461031257806375840fab1461032557806381ffcdf114610357578063866c4b171461036a575f5ffd5b80632e84e8e61161017f5780635a68f01a1161014f5780635a68f01a146102e55780636348ebb8146102ee578063650acd6614610301578063715018a61461030a575f5ffd5b80632e84e8e6146102875780632ee711321461029a5780633fa22548146102ad578063455366a4146102d2575f5ffd5b80632265f284116101ba5780632265f28414610245578063230ec5f71461024e578063256dc572146102615780632bb9fe8d14610274575f5ffd5b8062cc7f83146101df578063165e2639146101fb5780631c25433714610210575b5f5ffd5b6101e8600b5481565b6040519081526020015b60405180910390f35b61020e61020936600461097b565b610418565b005b600c5461022c90640100000000900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101f2565b6101e860025481565b61020e61025c3660046109a9565b610499565b61020e61026f3660046109c0565b6104cf565b61020e6102823660046109a9565b610545565b61020e6102953660046109a9565b610587565b61020e6102a83660046109a9565b6105da565b600c546102bd9063ffffffff1681565b60405163ffffffff90911681526020016101f2565b61020e6102e03660046109a9565b61061a565b6101e8600a5481565b61020e6102fc3660046109a9565b61066e565b6101e860075481565b61020e6106c3565b61020e6103203660046109e3565b6106d6565b600c5461033f90600160601b90046001600160a01b031681565b6040516001600160a01b0390911681526020016101f2565b61020e6103653660046109a9565b61070b565b61020e6103783660046109a9565b610774565b5f546001600160a01b031661033f565b61020e61039b3660046109a9565b6107eb565b6101e860055481565b6101e860035481565b61020e6103c03660046109a9565b61083c565b6101e860085481565b6101e860015481565b6101e860045481565b6101e860065481565b6101e860095481565b61020e6104003660046109e3565b61087c565b61020e6104133660046109a9565b6108be565b610420610900565b600a610435670de0b6b3a76400006009610a1d565b61043f9190610a3a565b8167ffffffffffffffff16111561046957604051632ad907fb60e01b815260040160405180910390fd5b600c805467ffffffffffffffff909216640100000000026bffffffffffffffff0000000019909216919091179055565b6104a1610900565b670de0b6b3a76400008111156104ca57604051632ad907fb60e01b815260040160405180910390fd5b600655565b6104d7610900565b600a8163ffffffff1610156104ff57604051639a721da360e01b815260040160405180910390fd5b620156308163ffffffff16111561052957604051632ad907fb60e01b815260040160405180910390fd5b600c805463ffffffff191663ffffffff92909216919091179055565b61054d610900565b670de0b6b3a76400006005546105639083610a59565b111561058257604051632ad907fb60e01b815260040160405180910390fd5b600455565b61058f610900565b60648110156105b157604051639a721da360e01b815260040160405180910390fd5b620f42408111156105d557604051632ad907fb60e01b815260040160405180910390fd5b600a55565b6105e2610900565b6105f56002670de0b6b3a7640000610a3a565b81111561061557604051632ad907fb60e01b815260040160405180910390fd5b600355565b610622610900565b610e1081101561064557604051639a721da360e01b815260040160405180910390fd5b62278d0081111561066957604051632ad907fb60e01b815260040160405180910390fd5b600855565b610676610900565b6201518081101561069a57604051639a721da360e01b815260040160405180910390fd5b620d2f008111156106be57604051632ad907fb60e01b815260040160405180910390fd5b600b55565b6106cb610900565b6106d45f61092c565b565b6106de610900565b600c80546001600160a01b03909216600160601b026bffffffffffffffffffffffff909216919091179055565b610713610900565b670de0b6b3a764000081101561073c57604051639a721da360e01b815260040160405180910390fd5b61074f670de0b6b3a7640000601f610a1d565b81111561076f57604051632ad907fb60e01b815260040160405180910390fd5b600255565b61077c610900565b610791670de0b6b3a7640000620186a0610a1d565b8110156107b157604051639a721da360e01b815260040160405180910390fd5b6107c6670de0b6b3a764000062989680610a1d565b8111156107e657604051632ad907fb60e01b815260040160405180910390fd5b600155565b6107f3610900565b600281101561081557604051639a721da360e01b815260040160405180910390fd5b606481111561083757604051632ad907fb60e01b815260040160405180910390fd5b600755565b610844610900565b610857670de0b6b3a76400006020610a1d565b81111561087757604051632ad907fb60e01b815260040160405180910390fd5b600955565b610884610900565b6001600160a01b0381166108b257604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6108bb8161092c565b50565b6108c6610900565b670de0b6b3a76400006004546108dc9083610a59565b11156108fb57604051632ad907fb60e01b815260040160405180910390fd5b600555565b5f546001600160a01b031633146106d45760405163118cdaa760e01b81523360048201526024016108a9565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f6020828403121561098b575f5ffd5b813567ffffffffffffffff811681146109a2575f5ffd5b9392505050565b5f602082840312156109b9575f5ffd5b5035919050565b5f602082840312156109d0575f5ffd5b813563ffffffff811681146109a2575f5ffd5b5f602082840312156109f3575f5ffd5b81356001600160a01b03811681146109a2575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610a3457610a34610a09565b92915050565b5f82610a5457634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115610a3457610a34610a0956fea2646970667358221220b3d86c1328aca45393e8769dcacb082c5afeb5509a47e80e109f0774a1c2147864736f6c634300081b0033a264697066735822122053d777808a676b00d85d3d50f094928d42313fb9905d852de71656313fda98cf64736f6c634300081b0033
Deployed Bytecode
0x608060405234801561000f575f5ffd5b5060043610610029575f3560e01c8063a40973061461002d575b5f5ffd5b61004061003b366004610c13565b610042565b005b5f816001600160a01b031663d46fa5186040518163ffffffff1660e01b8152600401602060405180830381865afa15801561007f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100a39190610c35565b90505f306040516100b390610bef565b6001600160a01b039091168152602001604051809103905ff0801580156100dc573d5f5f3e3d5ffd5b509050806001600160a01b031663866c4b17836001600160a01b031663c5f530af6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561012a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061014e9190610c50565b6040518263ffffffff1660e01b815260040161016c91815260200190565b5f604051808303815f87803b158015610183575f5ffd5b505af1158015610195573d5f5f3e3d5ffd5b50505050806001600160a01b03166381ffcdf1836001600160a01b0316632265f2846040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101e4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102089190610c50565b6040518263ffffffff1660e01b815260040161022691815260200190565b5f604051808303815f87803b15801561023d575f5ffd5b505af115801561024f573d5f5f3e3d5ffd5b50505050806001600160a01b0316632ee71132836001600160a01b031663a77865156040518163ffffffff1660e01b8152600401602060405180830381865afa15801561029e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102c29190610c50565b6040518263ffffffff1660e01b81526004016102e091815260200190565b5f604051808303815f87803b1580156102f7575f5ffd5b505af1158015610309573d5f5f3e3d5ffd5b50505050806001600160a01b0316632bb9fe8d836001600160a01b031663c74dd6216040518163ffffffff1660e01b8152600401602060405180830381865afa158015610358573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061037c9190610c50565b6040518263ffffffff1660e01b815260040161039a91815260200190565b5f604051808303815f87803b1580156103b1575f5ffd5b505af11580156103c3573d5f5f3e3d5ffd5b50505050806001600160a01b031663f8d5177e836001600160a01b03166394c3e9146040518163ffffffff1660e01b8152600401602060405180830381865afa158015610412573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104369190610c50565b6040518263ffffffff1660e01b815260040161045491815260200190565b5f604051808303815f87803b15801561046b575f5ffd5b505af115801561047d573d5f5f3e3d5ffd5b50505050806001600160a01b0316638f078bfa836001600160a01b031663650acd666040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104cc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104f09190610c50565b6040518263ffffffff1660e01b815260040161050e91815260200190565b5f604051808303815f87803b158015610525575f5ffd5b505af1158015610537573d5f5f3e3d5ffd5b50505050806001600160a01b031663455366a4836001600160a01b031663b82b84276040518163ffffffff1660e01b8152600401602060405180830381865afa158015610586573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105aa9190610c50565b6040518263ffffffff1660e01b81526004016105c891815260200190565b5f604051808303815f87803b1580156105df575f5ffd5b505af11580156105f1573d5f5f3e3d5ffd5b50505050806001600160a01b031663b6d9edd5836001600160a01b031663d9a7c1f96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610640573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106649190610c50565b6040518263ffffffff1660e01b815260040161068291815260200190565b5f604051808303815f87803b158015610699575f5ffd5b505af11580156106ab573d5f5f3e3d5ffd5b50505050806001600160a01b0316636348ebb8836001600160a01b031662cc7f836040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106f9573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061071d9190610c50565b6040518263ffffffff1660e01b815260040161073b91815260200190565b5f604051808303815f87803b158015610752575f5ffd5b505af1158015610764573d5f5f3e3d5ffd5b50505050806001600160a01b0316632e84e8e6836001600160a01b0316635a68f01a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107b3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107d79190610c50565b6040518263ffffffff1660e01b81526004016107f591815260200190565b5f604051808303815f87803b15801561080c575f5ffd5b505af115801561081e573d5f5f3e3d5ffd5b50505050806001600160a01b031663256dc572836001600160a01b0316633fa225486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561086d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108919190610c67565b6040516001600160e01b031960e084901b16815263ffffffff9190911660048201526024015f604051808303815f87803b1580156108cd575f5ffd5b505af11580156108df573d5f5f3e3d5ffd5b50505050806001600160a01b031663165e2639836001600160a01b0316631c2543376040518163ffffffff1660e01b8152600401602060405180830381865afa15801561092e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109529190610c8a565b6040516001600160e01b031960e084901b16815267ffffffffffffffff90911660048201526024015f604051808303815f87803b158015610991575f5ffd5b505af11580156109a3573d5f5f3e3d5ffd5b50505050806001600160a01b031663754e92e3836001600160a01b03166375840fab6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109f2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a169190610c35565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024015f604051808303815f87803b158015610a54575f5ffd5b505af1158015610a66573d5f5f3e3d5ffd5b50505050806001600160a01b031663230ec5f76064610a8a670de0b6b3a764000090565b610a95906032610cb1565b610a9f9190610cda565b6040518263ffffffff1660e01b8152600401610abd91815260200190565b5f604051808303815f87803b158015610ad4575f5ffd5b505af1158015610ae6573d5f5f3e3d5ffd5b50505050806001600160a01b031663f2fde38b836001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b35573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b599190610c35565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024015f604051808303815f87803b158015610b97575f5ffd5b505af1158015610ba9573d5f5f3e3d5ffd5b50506040516001600160a01b03841681527fd3fa187f7d4d0b967597fd8a933f05245448678338df3bc4639abdc6087185409250602001905060405180910390a1505050565b610b8e80610cfa83390190565b6001600160a01b0381168114610c10575f5ffd5b50565b5f60208284031215610c23575f5ffd5b8135610c2e81610bfc565b9392505050565b5f60208284031215610c45575f5ffd5b8151610c2e81610bfc565b5f60208284031215610c60575f5ffd5b5051919050565b5f60208284031215610c77575f5ffd5b815163ffffffff81168114610c2e575f5ffd5b5f60208284031215610c9a575f5ffd5b815167ffffffffffffffff81168114610c2e575f5ffd5b8082028115828204841417610cd457634e487b7160e01b5f52601160045260245ffd5b92915050565b5f82610cf457634e487b7160e01b5f52601260045260245ffd5b50049056fe6080604052348015600e575f5ffd5b50604051610b8e380380610b8e833981016040819052602b9160b4565b806001600160a01b038116605857604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b605f816065565b505060df565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f6020828403121560c3575f5ffd5b81516001600160a01b038116811460d8575f5ffd5b9392505050565b610aa2806100ec5f395ff3fe608060405234801561000f575f5ffd5b50600436106101db575f3560e01c8063754e92e311610109578063b6d9edd51161009e578063d475aa941161006e578063d475aa94146103e0578063d9a7c1f9146103e9578063f2fde38b146103f2578063f8d5177e14610405575f5ffd5b8063b6d9edd5146103b2578063b82b8427146103c5578063c5f530af146103ce578063c74dd621146103d7575f5ffd5b80638da5cb5b116100d95780638da5cb5b1461037d5780638f078bfa1461038d57806394c3e914146103a0578063a7786515146103a9575f5ffd5b8063754e92e31461031257806375840fab1461032557806381ffcdf114610357578063866c4b171461036a575f5ffd5b80632e84e8e61161017f5780635a68f01a1161014f5780635a68f01a146102e55780636348ebb8146102ee578063650acd6614610301578063715018a61461030a575f5ffd5b80632e84e8e6146102875780632ee711321461029a5780633fa22548146102ad578063455366a4146102d2575f5ffd5b80632265f284116101ba5780632265f28414610245578063230ec5f71461024e578063256dc572146102615780632bb9fe8d14610274575f5ffd5b8062cc7f83146101df578063165e2639146101fb5780631c25433714610210575b5f5ffd5b6101e8600b5481565b6040519081526020015b60405180910390f35b61020e61020936600461097b565b610418565b005b600c5461022c90640100000000900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101f2565b6101e860025481565b61020e61025c3660046109a9565b610499565b61020e61026f3660046109c0565b6104cf565b61020e6102823660046109a9565b610545565b61020e6102953660046109a9565b610587565b61020e6102a83660046109a9565b6105da565b600c546102bd9063ffffffff1681565b60405163ffffffff90911681526020016101f2565b61020e6102e03660046109a9565b61061a565b6101e8600a5481565b61020e6102fc3660046109a9565b61066e565b6101e860075481565b61020e6106c3565b61020e6103203660046109e3565b6106d6565b600c5461033f90600160601b90046001600160a01b031681565b6040516001600160a01b0390911681526020016101f2565b61020e6103653660046109a9565b61070b565b61020e6103783660046109a9565b610774565b5f546001600160a01b031661033f565b61020e61039b3660046109a9565b6107eb565b6101e860055481565b6101e860035481565b61020e6103c03660046109a9565b61083c565b6101e860085481565b6101e860015481565b6101e860045481565b6101e860065481565b6101e860095481565b61020e6104003660046109e3565b61087c565b61020e6104133660046109a9565b6108be565b610420610900565b600a610435670de0b6b3a76400006009610a1d565b61043f9190610a3a565b8167ffffffffffffffff16111561046957604051632ad907fb60e01b815260040160405180910390fd5b600c805467ffffffffffffffff909216640100000000026bffffffffffffffff0000000019909216919091179055565b6104a1610900565b670de0b6b3a76400008111156104ca57604051632ad907fb60e01b815260040160405180910390fd5b600655565b6104d7610900565b600a8163ffffffff1610156104ff57604051639a721da360e01b815260040160405180910390fd5b620156308163ffffffff16111561052957604051632ad907fb60e01b815260040160405180910390fd5b600c805463ffffffff191663ffffffff92909216919091179055565b61054d610900565b670de0b6b3a76400006005546105639083610a59565b111561058257604051632ad907fb60e01b815260040160405180910390fd5b600455565b61058f610900565b60648110156105b157604051639a721da360e01b815260040160405180910390fd5b620f42408111156105d557604051632ad907fb60e01b815260040160405180910390fd5b600a55565b6105e2610900565b6105f56002670de0b6b3a7640000610a3a565b81111561061557604051632ad907fb60e01b815260040160405180910390fd5b600355565b610622610900565b610e1081101561064557604051639a721da360e01b815260040160405180910390fd5b62278d0081111561066957604051632ad907fb60e01b815260040160405180910390fd5b600855565b610676610900565b6201518081101561069a57604051639a721da360e01b815260040160405180910390fd5b620d2f008111156106be57604051632ad907fb60e01b815260040160405180910390fd5b600b55565b6106cb610900565b6106d45f61092c565b565b6106de610900565b600c80546001600160a01b03909216600160601b026bffffffffffffffffffffffff909216919091179055565b610713610900565b670de0b6b3a764000081101561073c57604051639a721da360e01b815260040160405180910390fd5b61074f670de0b6b3a7640000601f610a1d565b81111561076f57604051632ad907fb60e01b815260040160405180910390fd5b600255565b61077c610900565b610791670de0b6b3a7640000620186a0610a1d565b8110156107b157604051639a721da360e01b815260040160405180910390fd5b6107c6670de0b6b3a764000062989680610a1d565b8111156107e657604051632ad907fb60e01b815260040160405180910390fd5b600155565b6107f3610900565b600281101561081557604051639a721da360e01b815260040160405180910390fd5b606481111561083757604051632ad907fb60e01b815260040160405180910390fd5b600755565b610844610900565b610857670de0b6b3a76400006020610a1d565b81111561087757604051632ad907fb60e01b815260040160405180910390fd5b600955565b610884610900565b6001600160a01b0381166108b257604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6108bb8161092c565b50565b6108c6610900565b670de0b6b3a76400006004546108dc9083610a59565b11156108fb57604051632ad907fb60e01b815260040160405180910390fd5b600555565b5f546001600160a01b031633146106d45760405163118cdaa760e01b81523360048201526024016108a9565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f6020828403121561098b575f5ffd5b813567ffffffffffffffff811681146109a2575f5ffd5b9392505050565b5f602082840312156109b9575f5ffd5b5035919050565b5f602082840312156109d0575f5ffd5b813563ffffffff811681146109a2575f5ffd5b5f602082840312156109f3575f5ffd5b81356001600160a01b03811681146109a2575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610a3457610a34610a09565b92915050565b5f82610a5457634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115610a3457610a34610a0956fea2646970667358221220b3d86c1328aca45393e8769dcacb082c5afeb5509a47e80e109f0774a1c2147864736f6c634300081b0033a264697066735822122053d777808a676b00d85d3d50f094928d42313fb9905d852de71656313fda98cf64736f6c634300081b0033
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in S
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ 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.