Token Bund V2.0

 

Overview ERC-20

Price
$0.00 @ 0.000000 MATIC
Fully Diluted Market Cap
Total Supply:
500,000 BUND

Holders:
273 addresses

Transfers:
-

Contract:
0x47dae46d31f31f84336Ac120b15eFdA261D484FB0x47dae46d31f31f84336Ac120b15eFdA261D484FB

Decimals:
18

Social Profiles:
Not Available, Update ?

 
Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

Click here to update the token ICO / general information
# Exchange Pair Price  24H Volume % Volume
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BUND

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 9 : Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

File 2 of 9 : BUND.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.11;

import "./LERC20.sol";

contract BUND is LERC20 {
    constructor(
        uint256 totalSupply_,
        string memory name_,
        string memory symbol_,
        address admin_,
        address recoveryAdmin_,
        uint256 timelockPeriod_,
        address lossless_
    )
        LERC20(
            totalSupply_,
            name_,
            symbol_,
            admin_,
            recoveryAdmin_,
            timelockPeriod_,
            lossless_
        )
    {}
}

File 3 of 9 : ILosslessController.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "./ILosslessERC20.sol";
import "./ILosslessGovernance.sol";
import "./ILosslessStaking.sol";
import "./ILosslessReporting.sol";
import "./IProtectionStrategy.sol";

interface ILssController {
    // function getLockedAmount(ILERC20 _token, address _account)  returns (uint256);
    // function getAvailableAmount(ILERC20 _token, address _account) external view returns (uint256 amount);
    function retrieveBlacklistedFunds(
        address[] calldata _addresses,
        ILERC20 _token,
        uint256 _reportId
    ) external returns (uint256);

    function whitelist(address _adr) external view returns (bool);

    function dexList(address _dexAddress) external returns (bool);

    function blacklist(address _adr) external view returns (bool);

    function admin() external view returns (address);

    function pauseAdmin() external view returns (address);

    function recoveryAdmin() external view returns (address);

    function guardian() external view returns (address);

    function losslessStaking() external view returns (ILssStaking);

    function losslessReporting() external view returns (ILssReporting);

    function losslessGovernance() external view returns (ILssGovernance);

    function dexTranferThreshold() external view returns (uint256);

    function settlementTimeLock() external view returns (uint256);

    function extraordinaryRetrievalProposalPeriod()
        external
        view
        returns (uint256);

    function pause() external;

    function unpause() external;

    function setAdmin(address _newAdmin) external;

    function setRecoveryAdmin(address _newRecoveryAdmin) external;

    function setPauseAdmin(address _newPauseAdmin) external;

    function setSettlementTimeLock(uint256 _newTimelock) external;

    function setDexTransferThreshold(uint256 _newThreshold) external;

    function setDexList(address[] calldata _dexList, bool _value) external;

    function setWhitelist(address[] calldata _addrList, bool _value) external;

    function addToBlacklist(address _adr) external;

    function resolvedNegatively(address _adr) external;

    function setStakingContractAddress(ILssStaking _adr) external;

    function setReportingContractAddress(ILssReporting _adr) external;

    function setGovernanceContractAddress(ILssGovernance _adr) external;

    function setTokenMintLimit(ILERC20 _token, uint256 limit) external;

    function setTokenMintPeriod(ILERC20 _token, uint256 _period) external;

    function setTokenBurnLimit(ILERC20 _token, uint256 _limit) external;

    function setTokenBurnPeriod(ILERC20 _token, uint256 _period) external;

    function proposeNewSettlementPeriod(ILERC20 _token, uint256 _seconds)
        external;

    function executeNewSettlementPeriod(ILERC20 _token) external;

    function activateEmergency(ILERC20 _token) external;

    function deactivateEmergency(ILERC20 _token) external;

    function setGuardian(address _newGuardian) external;

    function removeProtectedAddress(ILERC20 _token, address _protectedAddresss)
        external;

    function beforeTransfer(
        address _sender,
        address _recipient,
        uint256 _amount
    ) external;

    function beforeTransferFrom(
        address _msgSender,
        address _sender,
        address _recipient,
        uint256 _amount
    ) external;

    function beforeApprove(
        address _sender,
        address _spender,
        uint256 _amount
    ) external;

    function beforeIncreaseAllowance(
        address _msgSender,
        address _spender,
        uint256 _addedValue
    ) external;

    function beforeDecreaseAllowance(
        address _msgSender,
        address _spender,
        uint256 _subtractedValue
    ) external;

    function beforeMint(address _to, uint256 _amount) external;

    function beforeBurn(address _account, uint256 _amount) external;

    function afterTransfer(
        address _sender,
        address _recipient,
        uint256 _amount
    ) external;

    function setProtectedAddress(
        ILERC20 _token,
        address _protectedAddress,
        ProtectionStrategy _strategy
    ) external;

    function setExtraordinaryRetrievalPeriod(uint256 _newPEriod) external;

    function extraordinaryRetrieval(
        ILERC20 _token,
        address[] calldata addresses,
        uint256 fundsToRetrieve
    ) external;

    event AdminChange(address indexed _newAdmin);
    event RecoveryAdminChange(address indexed _newAdmin);
    event PauseAdminChange(address indexed _newAdmin);
    event GuardianSet(
        address indexed _oldGuardian,
        address indexed _newGuardian
    );
    event NewProtectedAddress(
        ILERC20 indexed _token,
        address indexed _protectedAddress,
        address indexed _strategy
    );
    event RemovedProtectedAddress(
        ILERC20 indexed _token,
        address indexed _protectedAddress
    );
    event NewSettlementPeriodProposal(ILERC20 indexed _token, uint256 _seconds);
    event SettlementPeriodChange(
        ILERC20 indexed _token,
        uint256 _proposedTokenLockTimeframe
    );
    event NewSettlementTimelock(uint256 indexed _timelock);
    event NewDexThreshold(uint256 indexed _newThreshold);
    event NewDex(address indexed _dexAddress);
    event DexRemoval(address indexed _dexAddress);
    event NewWhitelistedAddress(address indexed _whitelistAdr);
    event WhitelistedAddressRemoval(address indexed _whitelistAdr);
    event NewBlacklistedAddress(address indexed _blacklistedAddres);
    event AccountBlacklistRemoval(address indexed _adr);
    event NewStakingContract(ILssStaking indexed _newAdr);
    event NewReportingContract(ILssReporting indexed _newAdr);
    event NewGovernanceContract(ILssGovernance indexed _newAdr);
    event EmergencyActive(ILERC20 indexed _token);
    event EmergencyDeactivation(ILERC20 indexed _token);
    event NewMint(
        ILERC20 indexed token,
        address indexed account,
        uint256 indexed amount
    );
    event NewMintLimit(ILERC20 indexed token, uint256 indexed limit);
    event NewMintPeriod(ILERC20 indexed token, uint256 indexed period);
    event NewBurn(
        ILERC20 indexed token,
        address indexed account,
        uint256 indexed amount
    );
    event NewBurnLimit(ILERC20 indexed token, uint256 indexed limit);
    event NewBurnPeriod(ILERC20 indexed token, uint256 indexed period);
    event NewExtraordinaryPeriod(
        uint256 indexed extraordinaryRetrievalProposalPeriod
    );
}

File 4 of 9 : ILosslessERC20.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

interface ILERC20 {
    function name() external view returns (string memory);

    function admin() external view returns (address);

    function getAdmin() external view returns (address);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);

    function totalSupply() external view returns (uint256);

    function balanceOf(address _account) external view returns (uint256);

    function transfer(address _recipient, uint256 _amount)
        external
        returns (bool);

    function allowance(address _owner, address _spender)
        external
        view
        returns (uint256);

    function approve(address _spender, uint256 _amount) external returns (bool);

    function transferFrom(
        address _sender,
        address _recipient,
        uint256 _amount
    ) external returns (bool);

    function increaseAllowance(address _spender, uint256 _addedValue)
        external
        returns (bool);

    function decreaseAllowance(address _spender, uint256 _subtractedValue)
        external
        returns (bool);

    function transferOutBlacklistedFunds(address[] calldata _from) external;

    function setLosslessAdmin(address _newAdmin) external;

    function transferRecoveryAdminOwnership(
        address _candidate,
        bytes32 _keyHash
    ) external;

    function acceptRecoveryAdminOwnership(bytes memory _key) external;

    function proposeLosslessTurnOff() external;

    function executeLosslessTurnOff() external;

    function executeLosslessTurnOn() external;

    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(
        address indexed _owner,
        address indexed _spender,
        uint256 _value
    );
    event NewAdmin(address indexed _newAdmin);
    event NewRecoveryAdminProposal(address indexed _candidate);
    event NewRecoveryAdmin(address indexed _newAdmin);
    event LosslessTurnOffProposal(uint256 _turnOffDate);
    event LosslessOff();
    event LosslessOn();
}

File 5 of 9 : ILosslessGovernance.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "./ILosslessERC20.sol";
import "./ILosslessStaking.sol";
import "./ILosslessReporting.sol";
import "./ILosslessController.sol";

interface ILssGovernance {
    function LSS_TEAM_INDEX() external view returns (uint256);

    function TOKEN_OWNER_INDEX() external view returns (uint256);

    function COMMITEE_INDEX() external view returns (uint256);

    function committeeMembersCount() external view returns (uint256);

    function walletDisputePeriod() external view returns (uint256);

    function losslessStaking() external view returns (ILssStaking);

    function losslessReporting() external view returns (ILssReporting);

    function losslessController() external view returns (ILssController);

    function isCommitteeMember(address _account) external view returns (bool);

    function getIsVoted(uint256 _reportId, uint256 _voterIndex)
        external
        view
        returns (bool);

    function getVote(uint256 _reportId, uint256 _voterIndex)
        external
        view
        returns (bool);

    function isReportSolved(uint256 _reportId) external view returns (bool);

    function reportResolution(uint256 _reportId) external view returns (bool);

    function getAmountReported(uint256 _reportId)
        external
        view
        returns (uint256);

    function setDisputePeriod(uint256 _timeFrame) external;

    function addCommitteeMembers(address[] memory _members) external;

    function removeCommitteeMembers(address[] memory _members) external;

    function losslessVote(uint256 _reportId, bool _vote) external;

    function tokenOwnersVote(uint256 _reportId, bool _vote) external;

    function committeeMemberVote(uint256 _reportId, bool _vote) external;

    function resolveReport(uint256 _reportId) external;

    function proposeWallet(uint256 _reportId, address wallet) external;

    function rejectWallet(uint256 _reportId) external;

    function retrieveFunds(uint256 _reportId) external;

    function retrieveCompensation() external;

    function claimCommitteeReward(uint256 _reportId) external;

    function setCompensationAmount(uint256 _amount) external;

    function losslessClaim(uint256 _reportId) external;

    function extaordinaryRetrieval(address[] calldata _address, ILERC20 _token)
        external;

    event NewCommitteeMembers(address[] _members);
    event CommitteeMembersRemoval(address[] _members);
    event LosslessTeamPositiveVote(uint256 indexed _reportId);
    event LosslessTeamNegativeVote(uint256 indexed _reportId);
    event TokenOwnersPositiveVote(uint256 indexed _reportId);
    event TokenOwnersNegativeVote(uint256 indexed _reportId);
    event CommitteeMemberPositiveVote(
        uint256 indexed _reportId,
        address indexed _member
    );
    event CommitteeMemberNegativeVote(
        uint256 indexed _reportId,
        address indexed _member
    );
    event ReportResolve(uint256 indexed _reportId, bool indexed _resolution);
    event WalletProposal(uint256 indexed _reportId, address indexed _wallet);
    event CommitteeMemberClaim(
        uint256 indexed _reportId,
        address indexed _member,
        uint256 indexed _amount
    );
    event CommitteeMajorityReach(
        uint256 indexed _reportId,
        bool indexed _result
    );
    event NewDisputePeriod(uint256 indexed _newPeriod);
    event WalletRejection(uint256 indexed _reportId);
    event FundsRetrieval(uint256 indexed _reportId, uint256 indexed _amount);
    event CompensationRetrieval(
        address indexed _wallet,
        uint256 indexed _amount
    );
    event LosslessClaim(
        ILERC20 indexed _token,
        uint256 indexed _reportID,
        uint256 indexed _amount
    );
    event ExtraordinaryProposalAccept(ILERC20 indexed _token);
}

File 6 of 9 : ILosslessReporting.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "./ILosslessERC20.sol";
import "./ILosslessGovernance.sol";
import "./ILosslessStaking.sol";
import "./ILosslessController.sol";

interface ILssReporting {
    function reporterReward() external returns (uint256);

    function losslessReward() external returns (uint256);

    function stakersReward() external returns (uint256);

    function committeeReward() external returns (uint256);

    function reportLifetime() external view returns (uint256);

    function reportingAmount() external returns (uint256);

    function reportCount() external returns (uint256);

    function stakingToken() external returns (ILERC20);

    function losslessController() external returns (ILssController);

    function losslessGovernance() external returns (ILssGovernance);

    function getVersion() external pure returns (uint256);

    function getRewards()
        external
        view
        returns (
            uint256 _reporter,
            uint256 _lossless,
            uint256 _committee,
            uint256 _stakers
        );

    function report(ILERC20 _token, address _account)
        external
        returns (uint256);

    function reporterClaimableAmount(uint256 _reportId)
        external
        view
        returns (uint256);

    function getReportInfo(uint256 _reportId)
        external
        view
        returns (
            address _reporter,
            address _reportedAddress,
            address _secondReportedAddress,
            uint256 _reportTimestamps,
            ILERC20 _reportTokens,
            bool _secondReports,
            bool _reporterClaimStatus
        );

    function pause() external;

    function unpause() external;

    function setStakingToken(ILERC20 _stakingToken) external;

    function setLosslessGovernance(ILssGovernance _losslessGovernance) external;

    function setReportingAmount(uint256 _reportingAmount) external;

    function setReporterReward(uint256 _reward) external;

    function setLosslessReward(uint256 _reward) external;

    function setStakersReward(uint256 _reward) external;

    function setCommitteeReward(uint256 _reward) external;

    function setReportLifetime(uint256 _lifetime) external;

    function secondReport(uint256 _reportId, address _account) external;

    function reporterClaim(uint256 _reportId) external;

    function retrieveCompensation(address _adr, uint256 _amount) external;

    event ReportSubmission(
        ILERC20 indexed _token,
        address indexed _account,
        uint256 indexed _reportId
    );
    event SecondReportSubmission(
        ILERC20 indexed _token,
        address indexed _account,
        uint256 indexed _reportId
    );
    event NewReportingAmount(uint256 indexed _newAmount);
    event NewStakingToken(ILERC20 indexed _token);
    event NewGovernanceContract(ILssGovernance indexed _adr);
    event NewReporterReward(uint256 indexed _newValue);
    event NewLosslessReward(uint256 indexed _newValue);
    event NewStakersReward(uint256 indexed _newValue);
    event NewCommitteeReward(uint256 indexed _newValue);
    event NewReportLifetime(uint256 indexed _newValue);
    event ReporterClaim(
        address indexed _reporter,
        uint256 indexed _reportId,
        uint256 indexed _amount
    );
    event CompensationRetrieve(address indexed _adr, uint256 indexed _amount);
}

File 7 of 9 : ILosslessStaking.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "./ILosslessERC20.sol";
import "./ILosslessGovernance.sol";
import "./ILosslessReporting.sol";
import "./ILosslessController.sol";

interface ILssStaking {
    function stakingToken() external returns (ILERC20);

    function losslessReporting() external returns (ILssReporting);

    function losslessController() external returns (ILssController);

    function losslessGovernance() external returns (ILssGovernance);

    function stakingAmount() external returns (uint256);

    function getVersion() external pure returns (uint256);

    function getIsAccountStaked(uint256 _reportId, address _account)
        external
        view
        returns (bool);

    function getStakerCoefficient(uint256 _reportId, address _address)
        external
        view
        returns (uint256);

    function stakerClaimableAmount(uint256 _reportId)
        external
        view
        returns (uint256);

    function reportCoefficient(uint256 _reportId)
        external
        view
        returns (uint256);

    function pause() external;

    function unpause() external;

    function setLssReporting(ILssReporting _losslessReporting) external;

    function setStakingToken(ILERC20 _stakingToken) external;

    function setLosslessGovernance(ILssGovernance _losslessGovernance) external;

    function setStakingAmount(uint256 _stakingAmount) external;

    function stake(uint256 _reportId) external;

    function stakerClaim(uint256 _reportId) external;

    event NewStake(
        ILERC20 indexed _token,
        address indexed _account,
        uint256 indexed _reportId
    );
    event StakerClaim(
        address indexed _staker,
        ILERC20 indexed _token,
        uint256 indexed _reportID,
        uint256 _amount
    );
    event NewStakingAmount(uint256 indexed _newAmount);
    event NewStakingToken(ILERC20 indexed _newToken);
    event NewReportingContract(ILssReporting indexed _newContract);
    event NewGovernanceContract(ILssGovernance indexed _newContract);
}

File 8 of 9 : IProtectionStrategy.sol
pragma solidity ^0.8.0;

interface ProtectionStrategy {
    function isTransferAllowed(
        address token,
        address sender,
        address recipient,
        uint256 amount
    ) external;
}

File 9 of 9 : LERC20.sol
//SPDX-License-Identifier: Unlicense
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/utils/Context.sol";

import "./interfaces/ILosslessERC20.sol";
import "./interfaces/ILosslessController.sol";

contract LERC20 is Context, ILERC20 {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;

    address public recoveryAdmin;
    address private recoveryAdminCandidate;
    bytes32 private recoveryAdminKeyHash;
    address public override admin;
    uint256 public timelockPeriod;
    uint256 public losslessTurnOffTimestamp;
    bool public isLosslessOn = true;
    ILssController public lossless;

    constructor(
        uint256 totalSupply_,
        string memory name_,
        string memory symbol_,
        address admin_,
        address recoveryAdmin_,
        uint256 timelockPeriod_,
        address lossless_
    ) {
        _mint(_msgSender(), totalSupply_);
        _name = name_;
        _symbol = symbol_;
        admin = admin_;
        recoveryAdmin = recoveryAdmin_;
        recoveryAdminCandidate = address(0);
        recoveryAdminKeyHash = "";
        timelockPeriod = timelockPeriod_;
        losslessTurnOffTimestamp = 0;
        lossless = ILssController(lossless_);
    }

    // --- LOSSLESS modifiers ---

    modifier lssAprove(address spender, uint256 amount) {
        if (isLosslessOn) {
            lossless.beforeApprove(_msgSender(), spender, amount);
        }
        _;
    }

    modifier lssTransfer(address recipient, uint256 amount) {
        if (isLosslessOn) {
            lossless.beforeTransfer(_msgSender(), recipient, amount);
        }
        _;
    }

    modifier lssTransferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) {
        if (isLosslessOn) {
            lossless.beforeTransferFrom(
                _msgSender(),
                sender,
                recipient,
                amount
            );
        }
        _;
    }

    modifier lssIncreaseAllowance(address spender, uint256 addedValue) {
        if (isLosslessOn) {
            lossless.beforeIncreaseAllowance(_msgSender(), spender, addedValue);
        }
        _;
    }

    modifier lssDecreaseAllowance(address spender, uint256 subtractedValue) {
        if (isLosslessOn) {
            lossless.beforeDecreaseAllowance(
                _msgSender(),
                spender,
                subtractedValue
            );
        }
        _;
    }

    modifier onlyRecoveryAdmin() {
        require(
            _msgSender() == recoveryAdmin,
            "LERC20: Must be recovery admin"
        );
        _;
    }

    // --- LOSSLESS management ---
    function transferOutBlacklistedFunds(address[] calldata from)
        external
        override
    {
        require(
            _msgSender() == address(lossless),
            "LERC20: Only lossless contract"
        );

        uint256 fromLength = from.length;
        uint256 totalAmount = 0;

        for (uint256 i = 0; i < fromLength; i++) {
            address fromAddress = from[i];
            uint256 fromBalance = _balances[fromAddress];
            _balances[fromAddress] = 0;
            totalAmount += fromBalance;
            emit Transfer(fromAddress, address(lossless), fromBalance);
        }

        _balances[address(lossless)] += totalAmount;
    }

    function setLosslessAdmin(address newAdmin)
        external
        override
        onlyRecoveryAdmin
    {
        require(newAdmin != admin, "LERC20: Cannot set same address");
        emit NewAdmin(newAdmin);
        admin = newAdmin;
    }

    function transferRecoveryAdminOwnership(address candidate, bytes32 keyHash)
        external
        override
        onlyRecoveryAdmin
    {
        recoveryAdminCandidate = candidate;
        recoveryAdminKeyHash = keyHash;
        emit NewRecoveryAdminProposal(candidate);
    }

    function acceptRecoveryAdminOwnership(bytes memory key) external override {
        require(
            _msgSender() == recoveryAdminCandidate,
            "LERC20: Must be canditate"
        );
        require(keccak256(key) == recoveryAdminKeyHash, "LERC20: Invalid key");
        emit NewRecoveryAdmin(recoveryAdminCandidate);
        recoveryAdmin = recoveryAdminCandidate;
        recoveryAdminCandidate = address(0);
    }

    function proposeLosslessTurnOff() external override onlyRecoveryAdmin {
        require(
            losslessTurnOffTimestamp == 0,
            "LERC20: TurnOff already proposed"
        );
        require(isLosslessOn, "LERC20: Lossless already off");
        losslessTurnOffTimestamp = block.timestamp + timelockPeriod;
        emit LosslessTurnOffProposal(losslessTurnOffTimestamp);
    }

    function executeLosslessTurnOff() external override onlyRecoveryAdmin {
        require(losslessTurnOffTimestamp != 0, "LERC20: TurnOff not proposed");
        require(
            losslessTurnOffTimestamp <= block.timestamp,
            "LERC20: Time lock in progress"
        );
        isLosslessOn = false;
        losslessTurnOffTimestamp = 0;
        emit LosslessOff();
    }

    function executeLosslessTurnOn() external override onlyRecoveryAdmin {
        require(!isLosslessOn, "LERC20: Lossless already on");
        losslessTurnOffTimestamp = 0;
        isLosslessOn = true;
        emit LosslessOn();
    }

    function getAdmin() public view virtual override returns (address) {
        return admin;
    }

    // --- ERC20 methods ---

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount)
        public
        virtual
        override
        lssTransfer(recipient, amount)
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount)
        public
        virtual
        override
        lssAprove(spender, amount)
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    )
        public
        virtual
        override
        lssTransferFrom(sender, recipient, amount)
        returns (bool)
    {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(
            currentAllowance >= amount,
            "LERC20: transfer amount exceeds allowance"
        );
        _transfer(sender, recipient, amount);

        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        override
        lssIncreaseAllowance(spender, addedValue)
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender] + addedValue
        );
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        override
        lssDecreaseAllowance(spender, subtractedValue)
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(
            currentAllowance >= subtractedValue,
            "LERC20: decreased allowance below zero"
        );
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "LERC20: transfer from the zero address");

        uint256 senderBalance = _balances[sender];
        require(
            senderBalance >= amount,
            "LERC20: transfer amount exceeds balance"
        );
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "LERC20: mint to the zero address");

        _totalSupply += amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
}

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"uint256","name":"totalSupply_","type":"uint256"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"address","name":"admin_","type":"address"},{"internalType":"address","name":"recoveryAdmin_","type":"address"},{"internalType":"uint256","name":"timelockPeriod_","type":"uint256"},{"internalType":"address","name":"lossless_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"LosslessOff","type":"event"},{"anonymous":false,"inputs":[],"name":"LosslessOn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_turnOffDate","type":"uint256"}],"name":"LosslessTurnOffProposal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_newAdmin","type":"address"}],"name":"NewAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_newAdmin","type":"address"}],"name":"NewRecoveryAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_candidate","type":"address"}],"name":"NewRecoveryAdminProposal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"bytes","name":"key","type":"bytes"}],"name":"acceptRecoveryAdminOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"executeLosslessTurnOff","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"executeLosslessTurnOn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isLosslessOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lossless","outputs":[{"internalType":"contract ILssController","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"losslessTurnOffTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposeLosslessTurnOff","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"recoveryAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"setLosslessAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timelockPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"from","type":"address[]"}],"name":"transferOutBlacklistedFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"candidate","type":"address"},{"internalType":"bytes32","name":"keyHash","type":"bytes32"}],"name":"transferRecoveryAdminOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526001600b60006101000a81548160ff0219169083151502179055503480156200002c57600080fd5b50604051620033e0380380620033e0833981810160405281019062000052919062000617565b868686868686866200007a6200006d620001dc60201b60201c565b88620001e460201b60201c565b8560039080519060200190620000929291906200032a565b508460049080519060200190620000ab9291906200032a565b5083600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600781905550816009819055506000600a8190555080600b60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505050505050505050620008aa565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000257576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200024e9062000769565b60405180910390fd5b80600260008282546200026b9190620007ba565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200031e919062000828565b60405180910390a35050565b828054620003389062000874565b90600052602060002090601f0160209004810192826200035c5760008555620003a8565b82601f106200037757805160ff1916838001178555620003a8565b82800160010185558215620003a8579182015b82811115620003a75782518255916020019190600101906200038a565b5b509050620003b79190620003bb565b5090565b5b80821115620003d6576000816000905550600101620003bc565b5090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6200040381620003ee565b81146200040f57600080fd5b50565b6000815190506200042381620003f8565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200047e8262000433565b810181811067ffffffffffffffff82111715620004a0576200049f62000444565b5b80604052505050565b6000620004b5620003da565b9050620004c3828262000473565b919050565b600067ffffffffffffffff821115620004e657620004e562000444565b5b620004f18262000433565b9050602081019050919050565b60005b838110156200051e57808201518184015260208101905062000501565b838111156200052e576000848401525b50505050565b60006200054b6200054584620004c8565b620004a9565b9050828152602081018484840111156200056a57620005696200042e565b5b62000577848285620004fe565b509392505050565b600082601f83011262000597576200059662000429565b5b8151620005a984826020860162000534565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620005df82620005b2565b9050919050565b620005f181620005d2565b8114620005fd57600080fd5b50565b6000815190506200061181620005e6565b92915050565b600080600080600080600060e0888a031215620006395762000638620003e4565b5b6000620006498a828b0162000412565b975050602088015167ffffffffffffffff8111156200066d576200066c620003e9565b5b6200067b8a828b016200057f565b965050604088015167ffffffffffffffff8111156200069f576200069e620003e9565b5b620006ad8a828b016200057f565b9550506060620006c08a828b0162000600565b9450506080620006d38a828b0162000600565b93505060a0620006e68a828b0162000412565b92505060c0620006f98a828b0162000600565b91505092959891949750929550565b600082825260208201905092915050565b7f4c45524332303a206d696e7420746f20746865207a65726f2061646472657373600082015250565b60006200075160208362000708565b91506200075e8262000719565b602082019050919050565b60006020820190508181036000830152620007848162000742565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007c782620003ee565b9150620007d483620003ee565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200080c576200080b6200078b565b5b828201905092915050565b6200082281620003ee565b82525050565b60006020820190506200083f600083018462000817565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200088d57607f821691505b60208210811415620008a457620008a362000845565b5b50919050565b612b2680620008ba6000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80636e9960c3116100de578063a9059cbb11610097578063ccfa214f11610071578063ccfa214f1461042a578063d6e242b814610448578063dd62ed3e14610452578063f851a4401461048257610173565b8063a9059cbb146103d4578063b38fe95714610404578063b5c228771461040e57610173565b80636e9960c31461030057806370a082311461031e57806393310ffe1461034e578063936af9111461036a57806395d89b4114610386578063a457c2d7146103a457610173565b8063313ce56711610130578063313ce5671461024e57806334f6ebf51461026c578063395093511461028a5780635b8a194a146102ba5780635f6529a3146102c457806361086b00146102e257610173565b806306fdde0314610178578063095ea7b31461019657806318160ddd146101c657806323b872dd146101e45780632baa3c9e146102145780632ecaf67514610230575b600080fd5b6101806104a0565b60405161018d9190611cbc565b60405180910390f35b6101b060048036038101906101ab9190611d86565b610532565b6040516101bd9190611de1565b60405180910390f35b6101ce610602565b6040516101db9190611e0b565b60405180910390f35b6101fe60048036038101906101f99190611e26565b61060c565b60405161020b9190611de1565b60405180910390f35b61022e60048036038101906102299190611e79565b6107c3565b005b610238610972565b6040516102459190611e0b565b60405180910390f35b610256610978565b6040516102639190611ec2565b60405180910390f35b610274610981565b6040516102819190611f3c565b60405180910390f35b6102a4600480360381019061029f9190611d86565b6109a7565b6040516102b19190611de1565b60405180910390f35b6102c2610b05565b005b6102cc610c3d565b6040516102d99190611f66565b60405180910390f35b6102ea610c63565b6040516102f79190611e0b565b60405180910390f35b610308610c69565b6040516103159190611f66565b60405180910390f35b61033860048036038101906103339190611e79565b610c93565b6040516103459190611e0b565b60405180910390f35b61036860048036038101906103639190611fb7565b610cdb565b005b610384600480360381019061037f919061205c565b610e01565b005b61038e611087565b60405161039b9190611cbc565b60405180910390f35b6103be60048036038101906103b99190611d86565b611119565b6040516103cb9190611de1565b60405180910390f35b6103ee60048036038101906103e99190611d86565b6112c0565b6040516103fb9190611de1565b60405180910390f35b61040c611390565b005b610428600480360381019061042391906121d9565b611503565b005b6104326116f2565b60405161043f9190611de1565b60405180910390f35b610450611705565b005b61046c60048036038101906104679190612222565b61187f565b6040516104799190611e0b565b60405180910390f35b61048a611906565b6040516104979190611f66565b60405180910390f35b6060600380546104af90612291565b80601f01602080910402602001604051908101604052809291908181526020018280546104db90612291565b80156105285780601f106104fd57610100808354040283529160200191610528565b820191906000526020600020905b81548152906001019060200180831161050b57829003601f168201915b5050505050905090565b60008282600b60009054906101000a900460ff16156105e457600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166347abf3be61059161192c565b84846040518463ffffffff1660e01b81526004016105b1939291906122c3565b600060405180830381600087803b1580156105cb57600080fd5b505af11580156105df573d6000803e3d6000fd5b505050505b6105f66105ef61192c565b8686611934565b60019250505092915050565b6000600254905090565b6000838383600b60009054906101000a900460ff16156106c157600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663379f5c6961066c61192c565b8585856040518563ffffffff1660e01b815260040161068e94939291906122fa565b600060405180830381600087803b1580156106a857600080fd5b505af11580156106bc573d6000803e3d6000fd5b505050505b6000600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061070c61192c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508581101561078c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610783906123b1565b60405180910390fd5b610797888888611a1f565b6107b4886107a361192c565b88846107af9190612400565b611934565b60019450505050509392505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661080461192c565b73ffffffffffffffffffffffffffffffffffffffff161461085a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085190612480565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156108eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e2906124ec565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff167f71614071b88dee5e0b2ae578a9dd7b2ebbe9ae832ba419dc0242cd065a290b6c60405160405180910390a280600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60095481565b60006012905090565b600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008282600b60009054906101000a900460ff1615610a5957600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cf5961bb610a0661192c565b84846040518463ffffffff1660e01b8152600401610a26939291906122c3565b600060405180830381600087803b158015610a4057600080fd5b505af1158015610a54573d6000803e3d6000fd5b505050505b610af9610a6461192c565b868660016000610a7261192c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610af4919061250c565b611934565b60019250505092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b4661192c565b73ffffffffffffffffffffffffffffffffffffffff1614610b9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9390612480565b60405180910390fd5b600b60009054906101000a900460ff1615610bec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be3906125ae565b60405180910390fd5b6000600a819055506001600b60006101000a81548160ff0219169083151502179055507f1ba3b66404043da8297d0b876fa6464f2cb127edfc6626308046d4503028322b60405160405180910390a1565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d1c61192c565b73ffffffffffffffffffffffffffffffffffffffff1614610d72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6990612480565b60405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806007819055508173ffffffffffffffffffffffffffffffffffffffff167f6c591da8da2f6e69746d7d9ae61c27ee29fbe303798141b4942ae2aef54274b160405160405180910390a25050565b600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e4261192c565b73ffffffffffffffffffffffffffffffffffffffff1614610e98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8f9061261a565b60405180910390fd5b60008282905090506000805b82811015611009576000858583818110610ec157610ec061263a565b5b9050602002016020810190610ed69190611e79565b905060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508084610f6b919061250c565b9350600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610fec9190611e0b565b60405180910390a35050808061100190612669565b915050610ea4565b5080600080600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461107a919061250c565b9250508190555050505050565b60606004805461109690612291565b80601f01602080910402602001604051908101604052809291908181526020018280546110c290612291565b801561110f5780601f106110e45761010080835404028352916020019161110f565b820191906000526020600020905b8154815290600101906020018083116110f257829003601f168201915b5050505050905090565b60008282600b60009054906101000a900460ff16156111cb57600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663568c75a961117861192c565b84846040518463ffffffff1660e01b8152600401611198939291906122c3565b600060405180830381600087803b1580156111b257600080fd5b505af11580156111c6573d6000803e3d6000fd5b505050505b6000600160006111d961192c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905084811015611296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128d90612724565b60405180910390fd5b6112b36112a161192c565b8787846112ae9190612400565b611934565b6001935050505092915050565b60008282600b60009054906101000a900460ff161561137257600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631ffb811f61131f61192c565b84846040518463ffffffff1660e01b815260040161133f939291906122c3565b600060405180830381600087803b15801561135957600080fd5b505af115801561136d573d6000803e3d6000fd5b505050505b61138461137d61192c565b8686611a1f565b60019250505092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113d161192c565b73ffffffffffffffffffffffffffffffffffffffff1614611427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141e90612480565b60405180910390fd5b6000600a54141561146d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146490612790565b60405180910390fd5b42600a5411156114b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a9906127fc565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506000600a819055507f3eb72350c9c7928d31e9ab450bfff2c159434aa4b82658a7d8eae7f109cb4e7b60405160405180910390a1565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661154461192c565b73ffffffffffffffffffffffffffffffffffffffff161461159a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159190612868565b60405180910390fd5b6007548180519060200120146115e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dc906128d4565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fb94bba6936ec7f75ee931dadf6e1a4d66b43d09b6fa0178fb13df9b77fb5841f60405160405180910390a2600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b60009054906101000a900460ff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661174661192c565b73ffffffffffffffffffffffffffffffffffffffff161461179c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179390612480565b60405180910390fd5b6000600a54146117e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d890612940565b60405180910390fd5b600b60009054906101000a900460ff16611830576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611827906129ac565b60405180910390fd5b6009544261183e919061250c565b600a819055507f6ca688e6e3ddd707280140b2bf0106afe883689b6c74e68cbd517576dd9c245a600a546040516118759190611e0b565b60405180910390a1565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a129190611e0b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8690612a3e565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611b15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0c90612ad0565b60405180910390fd5b8181611b219190612400565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611bb1919061250c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c159190611e0b565b60405180910390a350505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611c5d578082015181840152602081019050611c42565b83811115611c6c576000848401525b50505050565b6000601f19601f8301169050919050565b6000611c8e82611c23565b611c988185611c2e565b9350611ca8818560208601611c3f565b611cb181611c72565b840191505092915050565b60006020820190508181036000830152611cd68184611c83565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611d1d82611cf2565b9050919050565b611d2d81611d12565b8114611d3857600080fd5b50565b600081359050611d4a81611d24565b92915050565b6000819050919050565b611d6381611d50565b8114611d6e57600080fd5b50565b600081359050611d8081611d5a565b92915050565b60008060408385031215611d9d57611d9c611ce8565b5b6000611dab85828601611d3b565b9250506020611dbc85828601611d71565b9150509250929050565b60008115159050919050565b611ddb81611dc6565b82525050565b6000602082019050611df66000830184611dd2565b92915050565b611e0581611d50565b82525050565b6000602082019050611e206000830184611dfc565b92915050565b600080600060608486031215611e3f57611e3e611ce8565b5b6000611e4d86828701611d3b565b9350506020611e5e86828701611d3b565b9250506040611e6f86828701611d71565b9150509250925092565b600060208284031215611e8f57611e8e611ce8565b5b6000611e9d84828501611d3b565b91505092915050565b600060ff82169050919050565b611ebc81611ea6565b82525050565b6000602082019050611ed76000830184611eb3565b92915050565b6000819050919050565b6000611f02611efd611ef884611cf2565b611edd565b611cf2565b9050919050565b6000611f1482611ee7565b9050919050565b6000611f2682611f09565b9050919050565b611f3681611f1b565b82525050565b6000602082019050611f516000830184611f2d565b92915050565b611f6081611d12565b82525050565b6000602082019050611f7b6000830184611f57565b92915050565b6000819050919050565b611f9481611f81565b8114611f9f57600080fd5b50565b600081359050611fb181611f8b565b92915050565b60008060408385031215611fce57611fcd611ce8565b5b6000611fdc85828601611d3b565b9250506020611fed85828601611fa2565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f84011261201c5761201b611ff7565b5b8235905067ffffffffffffffff81111561203957612038611ffc565b5b60208301915083602082028301111561205557612054612001565b5b9250929050565b6000806020838503121561207357612072611ce8565b5b600083013567ffffffffffffffff81111561209157612090611ced565b5b61209d85828601612006565b92509250509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6120e682611c72565b810181811067ffffffffffffffff82111715612105576121046120ae565b5b80604052505050565b6000612118611cde565b905061212482826120dd565b919050565b600067ffffffffffffffff821115612144576121436120ae565b5b61214d82611c72565b9050602081019050919050565b82818337600083830152505050565b600061217c61217784612129565b61210e565b905082815260208101848484011115612198576121976120a9565b5b6121a384828561215a565b509392505050565b600082601f8301126121c0576121bf611ff7565b5b81356121d0848260208601612169565b91505092915050565b6000602082840312156121ef576121ee611ce8565b5b600082013567ffffffffffffffff81111561220d5761220c611ced565b5b612219848285016121ab565b91505092915050565b6000806040838503121561223957612238611ce8565b5b600061224785828601611d3b565b925050602061225885828601611d3b565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806122a957607f821691505b602082108114156122bd576122bc612262565b5b50919050565b60006060820190506122d86000830186611f57565b6122e56020830185611f57565b6122f26040830184611dfc565b949350505050565b600060808201905061230f6000830187611f57565b61231c6020830186611f57565b6123296040830185611f57565b6123366060830184611dfc565b95945050505050565b7f4c45524332303a207472616e7366657220616d6f756e7420657863656564732060008201527f616c6c6f77616e63650000000000000000000000000000000000000000000000602082015250565b600061239b602983611c2e565b91506123a68261233f565b604082019050919050565b600060208201905081810360008301526123ca8161238e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061240b82611d50565b915061241683611d50565b925082821015612429576124286123d1565b5b828203905092915050565b7f4c45524332303a204d757374206265207265636f766572792061646d696e0000600082015250565b600061246a601e83611c2e565b915061247582612434565b602082019050919050565b600060208201905081810360008301526124998161245d565b9050919050565b7f4c45524332303a2043616e6e6f74207365742073616d65206164647265737300600082015250565b60006124d6601f83611c2e565b91506124e1826124a0565b602082019050919050565b60006020820190508181036000830152612505816124c9565b9050919050565b600061251782611d50565b915061252283611d50565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612557576125566123d1565b5b828201905092915050565b7f4c45524332303a204c6f73736c65737320616c7265616479206f6e0000000000600082015250565b6000612598601b83611c2e565b91506125a382612562565b602082019050919050565b600060208201905081810360008301526125c78161258b565b9050919050565b7f4c45524332303a204f6e6c79206c6f73736c65737320636f6e74726163740000600082015250565b6000612604601e83611c2e565b915061260f826125ce565b602082019050919050565b60006020820190508181036000830152612633816125f7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061267482611d50565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156126a7576126a66123d1565b5b600182019050919050565b7f4c45524332303a2064656372656173656420616c6c6f77616e63652062656c6f60008201527f77207a65726f0000000000000000000000000000000000000000000000000000602082015250565b600061270e602683611c2e565b9150612719826126b2565b604082019050919050565b6000602082019050818103600083015261273d81612701565b9050919050565b7f4c45524332303a205475726e4f6666206e6f742070726f706f73656400000000600082015250565b600061277a601c83611c2e565b915061278582612744565b602082019050919050565b600060208201905081810360008301526127a98161276d565b9050919050565b7f4c45524332303a2054696d65206c6f636b20696e2070726f6772657373000000600082015250565b60006127e6601d83611c2e565b91506127f1826127b0565b602082019050919050565b60006020820190508181036000830152612815816127d9565b9050919050565b7f4c45524332303a204d7573742062652063616e64697461746500000000000000600082015250565b6000612852601983611c2e565b915061285d8261281c565b602082019050919050565b6000602082019050818103600083015261288181612845565b9050919050565b7f4c45524332303a20496e76616c6964206b657900000000000000000000000000600082015250565b60006128be601383611c2e565b91506128c982612888565b602082019050919050565b600060208201905081810360008301526128ed816128b1565b9050919050565b7f4c45524332303a205475726e4f666620616c72656164792070726f706f736564600082015250565b600061292a602083611c2e565b9150612935826128f4565b602082019050919050565b600060208201905081810360008301526129598161291d565b9050919050565b7f4c45524332303a204c6f73736c65737320616c7265616479206f666600000000600082015250565b6000612996601c83611c2e565b91506129a182612960565b602082019050919050565b600060208201905081810360008301526129c581612989565b9050919050565b7f4c45524332303a207472616e736665722066726f6d20746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612a28602683611c2e565b9150612a33826129cc565b604082019050919050565b60006020820190508181036000830152612a5781612a1b565b9050919050565b7f4c45524332303a207472616e7366657220616d6f756e7420657863656564732060008201527f62616c616e636500000000000000000000000000000000000000000000000000602082015250565b6000612aba602783611c2e565b9150612ac582612a5e565b604082019050919050565b60006020820190508181036000830152612ae981612aad565b905091905056fea264697066735822122096c5f58bdd7c79d3f719cdca04eec5be5241e14d8722a0650039b4b55f9ab85e64736f6c634300080b00330000000000000000000000000000000000000000000069e10de76676d080000000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000a65eba30e7cd074ece823bb658e5710ef03af45d000000000000000000000000a65eba30e7cd074ece823bb658e5710ef03af45d000000000000000000000000000000000000000000000000000000000001518000000000000000000000000066622e2c1b991983e88132da19b2c31f71009035000000000000000000000000000000000000000000000000000000000000000942756e642056322e300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000442554e4400000000000000000000000000000000000000000000000000000000

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000000000000000000000000069e10de76676d080000000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000a65eba30e7cd074ece823bb658e5710ef03af45d000000000000000000000000a65eba30e7cd074ece823bb658e5710ef03af45d000000000000000000000000000000000000000000000000000000000001518000000000000000000000000066622e2c1b991983e88132da19b2c31f71009035000000000000000000000000000000000000000000000000000000000000000942756e642056322e300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000442554e4400000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : totalSupply_ (uint256): 500000000000000000000000
Arg [1] : name_ (string): Bund V2.0
Arg [2] : symbol_ (string): BUND
Arg [3] : admin_ (address): 0xa65eba30e7cd074ece823bb658e5710ef03af45d
Arg [4] : recoveryAdmin_ (address): 0xa65eba30e7cd074ece823bb658e5710ef03af45d
Arg [5] : timelockPeriod_ (uint256): 86400
Arg [6] : lossless_ (address): 0x66622e2c1b991983e88132da19b2c31f71009035

-----Encoded View---------------
11 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000069e10de76676d0800000
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [3] : 000000000000000000000000a65eba30e7cd074ece823bb658e5710ef03af45d
Arg [4] : 000000000000000000000000a65eba30e7cd074ece823bb658e5710ef03af45d
Arg [5] : 0000000000000000000000000000000000000000000000000000000000015180
Arg [6] : 00000000000000000000000066622e2c1b991983e88132da19b2c31f71009035
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [8] : 42756e642056322e300000000000000000000000000000000000000000000000
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [10] : 42554e4400000000000000000000000000000000000000000000000000000000


Loading