Overview
ETH Balance
0 ETH
Eth Value
$0.00Token Holdings
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 30,360 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Process Expired ... | 21249149 | 3 hrs ago | IN | 0 ETH | 0.00082188 | ||||
Process Expired ... | 21247559 | 8 hrs ago | IN | 0 ETH | 0.00102969 | ||||
Process Expired ... | 21246264 | 12 hrs ago | IN | 0 ETH | 0.00136085 | ||||
Process Expired ... | 21239552 | 35 hrs ago | IN | 0 ETH | 0.00088493 | ||||
Process Expired ... | 21239149 | 36 hrs ago | IN | 0 ETH | 0.00076975 | ||||
Process Expired ... | 21236373 | 45 hrs ago | IN | 0 ETH | 0.00215821 | ||||
Process Expired ... | 21234335 | 2 days ago | IN | 0 ETH | 0.00116953 | ||||
Process Expired ... | 21234315 | 2 days ago | IN | 0 ETH | 0.00075223 | ||||
Process Expired ... | 21233246 | 2 days ago | IN | 0 ETH | 0.0008287 | ||||
Process Expired ... | 21231887 | 2 days ago | IN | 0 ETH | 0.00102417 | ||||
Process Expired ... | 21231374 | 2 days ago | IN | 0 ETH | 0.00210792 | ||||
Process Expired ... | 21223649 | 3 days ago | IN | 0 ETH | 0.00234811 | ||||
Process Expired ... | 21221546 | 3 days ago | IN | 0 ETH | 0.00082926 | ||||
Process Expired ... | 21219153 | 4 days ago | IN | 0 ETH | 0.00061851 | ||||
Process Expired ... | 21218414 | 4 days ago | IN | 0 ETH | 0.0006252 | ||||
Process Expired ... | 21217755 | 4 days ago | IN | 0 ETH | 0.00104005 | ||||
Process Expired ... | 21210620 | 5 days ago | IN | 0 ETH | 0.00074892 | ||||
Process Expired ... | 21210467 | 5 days ago | IN | 0 ETH | 0.00056397 | ||||
Process Expired ... | 21209615 | 5 days ago | IN | 0 ETH | 0.00082029 | ||||
Process Expired ... | 21206132 | 6 days ago | IN | 0 ETH | 0.0005132 | ||||
Process Expired ... | 21206012 | 6 days ago | IN | 0 ETH | 0.00054898 | ||||
Process Expired ... | 21203049 | 6 days ago | IN | 0 ETH | 0.00074331 | ||||
Process Expired ... | 21201064 | 6 days ago | IN | 0 ETH | 0.00116373 | ||||
Process Expired ... | 21200746 | 6 days ago | IN | 0 ETH | 0.00074864 | ||||
Process Expired ... | 21200662 | 6 days ago | IN | 0 ETH | 0.00079146 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
RLBTRFLY
Compiler Version
v0.8.12+commit.f00d7308
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-08-08 */ // Sources flattened with hardhat v2.9.2 https://hardhat.org // File @rari-capital/solmate/src/utils/[email protected] /// @notice Gas optimized reentrancy protection for smart contracts. /// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/utils/ReentrancyGuard.sol) /// @author Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/security/ReentrancyGuard.sol) abstract contract ReentrancyGuard { uint256 private reentrancyStatus = 1; modifier nonReentrant() { require(reentrancyStatus == 1, "REENTRANCY"); reentrancyStatus = 2; _; reentrancyStatus = 1; } } // File @rari-capital/solmate/src/tokens/[email protected] /// @notice Modern and gas efficient ERC20 + EIP-2612 implementation. /// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC20.sol) /// @author Modified from Uniswap (https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2ERC20.sol) /// @dev Do not manually set balances without updating totalSupply, as the sum of all user balances must not exceed it. abstract contract ERC20 { /*/////////////////////////////////////////////////////////////// EVENTS //////////////////////////////////////////////////////////////*/ event Transfer(address indexed from, address indexed to, uint256 amount); event Approval(address indexed owner, address indexed spender, uint256 amount); /*/////////////////////////////////////////////////////////////// METADATA STORAGE //////////////////////////////////////////////////////////////*/ string public name; string public symbol; uint8 public immutable decimals; /*/////////////////////////////////////////////////////////////// ERC20 STORAGE //////////////////////////////////////////////////////////////*/ uint256 public totalSupply; mapping(address => uint256) public balanceOf; mapping(address => mapping(address => uint256)) public allowance; /*/////////////////////////////////////////////////////////////// EIP-2612 STORAGE //////////////////////////////////////////////////////////////*/ bytes32 public constant PERMIT_TYPEHASH = keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"); uint256 internal immutable INITIAL_CHAIN_ID; bytes32 internal immutable INITIAL_DOMAIN_SEPARATOR; mapping(address => uint256) public nonces; /*/////////////////////////////////////////////////////////////// CONSTRUCTOR //////////////////////////////////////////////////////////////*/ constructor( string memory _name, string memory _symbol, uint8 _decimals ) { name = _name; symbol = _symbol; decimals = _decimals; INITIAL_CHAIN_ID = block.chainid; INITIAL_DOMAIN_SEPARATOR = computeDomainSeparator(); } /*/////////////////////////////////////////////////////////////// ERC20 LOGIC //////////////////////////////////////////////////////////////*/ function approve(address spender, uint256 amount) public virtual returns (bool) { allowance[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function transfer(address to, uint256 amount) public virtual returns (bool) { balanceOf[msg.sender] -= amount; // Cannot overflow because the sum of all user // balances can't exceed the max uint256 value. unchecked { balanceOf[to] += amount; } emit Transfer(msg.sender, to, amount); return true; } function transferFrom( address from, address to, uint256 amount ) public virtual returns (bool) { uint256 allowed = allowance[from][msg.sender]; // Saves gas for limited approvals. if (allowed != type(uint256).max) allowance[from][msg.sender] = allowed - amount; balanceOf[from] -= amount; // Cannot overflow because the sum of all user // balances can't exceed the max uint256 value. unchecked { balanceOf[to] += amount; } emit Transfer(from, to, amount); return true; } /*/////////////////////////////////////////////////////////////// EIP-2612 LOGIC //////////////////////////////////////////////////////////////*/ function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) public virtual { require(deadline >= block.timestamp, "PERMIT_DEADLINE_EXPIRED"); // Unchecked because the only math done is incrementing // the owner's nonce which cannot realistically overflow. unchecked { bytes32 digest = keccak256( abi.encodePacked( "\x19\x01", DOMAIN_SEPARATOR(), keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline)) ) ); address recoveredAddress = ecrecover(digest, v, r, s); require(recoveredAddress != address(0) && recoveredAddress == owner, "INVALID_SIGNER"); allowance[recoveredAddress][spender] = value; } emit Approval(owner, spender, value); } function DOMAIN_SEPARATOR() public view virtual returns (bytes32) { return block.chainid == INITIAL_CHAIN_ID ? INITIAL_DOMAIN_SEPARATOR : computeDomainSeparator(); } function computeDomainSeparator() internal view virtual returns (bytes32) { return keccak256( abi.encode( keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"), keccak256(bytes(name)), keccak256("1"), block.chainid, address(this) ) ); } /*/////////////////////////////////////////////////////////////// INTERNAL MINT/BURN LOGIC //////////////////////////////////////////////////////////////*/ function _mint(address to, uint256 amount) internal virtual { totalSupply += amount; // Cannot overflow because the sum of all user // balances can't exceed the max uint256 value. unchecked { balanceOf[to] += amount; } emit Transfer(address(0), to, amount); } function _burn(address from, uint256 amount) internal virtual { balanceOf[from] -= amount; // Cannot underflow because a user's balance // will never be larger than the total supply. unchecked { totalSupply -= amount; } emit Transfer(from, address(0), amount); } } // File @rari-capital/solmate/src/utils/[email protected] /// @notice Safe ETH and ERC20 transfer library that gracefully handles missing return values. /// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/utils/SafeTransferLib.sol) /// @author Modified from Gnosis (https://github.com/gnosis/gp-v2-contracts/blob/main/src/contracts/libraries/GPv2SafeERC20.sol) /// @dev Use with caution! Some functions in this library knowingly create dirty bits at the destination of the free memory pointer. library SafeTransferLib { /*/////////////////////////////////////////////////////////////// ETH OPERATIONS //////////////////////////////////////////////////////////////*/ function safeTransferETH(address to, uint256 amount) internal { bool callStatus; assembly { // Transfer the ETH and store if it succeeded or not. callStatus := call(gas(), to, amount, 0, 0, 0, 0) } require(callStatus, "ETH_TRANSFER_FAILED"); } /*/////////////////////////////////////////////////////////////// ERC20 OPERATIONS //////////////////////////////////////////////////////////////*/ function safeTransferFrom( ERC20 token, address from, address to, uint256 amount ) internal { bool callStatus; assembly { // Get a pointer to some free memory. let freeMemoryPointer := mload(0x40) // Write the abi-encoded calldata to memory piece by piece: mstore(freeMemoryPointer, 0x23b872dd00000000000000000000000000000000000000000000000000000000) // Begin with the function selector. mstore(add(freeMemoryPointer, 4), and(from, 0xffffffffffffffffffffffffffffffffffffffff)) // Mask and append the "from" argument. mstore(add(freeMemoryPointer, 36), and(to, 0xffffffffffffffffffffffffffffffffffffffff)) // Mask and append the "to" argument. mstore(add(freeMemoryPointer, 68), amount) // Finally append the "amount" argument. No mask as it's a full 32 byte value. // Call the token and store if it succeeded or not. // We use 100 because the calldata length is 4 + 32 * 3. callStatus := call(gas(), token, 0, freeMemoryPointer, 100, 0, 0) } require(didLastOptionalReturnCallSucceed(callStatus), "TRANSFER_FROM_FAILED"); } function safeTransfer( ERC20 token, address to, uint256 amount ) internal { bool callStatus; assembly { // Get a pointer to some free memory. let freeMemoryPointer := mload(0x40) // Write the abi-encoded calldata to memory piece by piece: mstore(freeMemoryPointer, 0xa9059cbb00000000000000000000000000000000000000000000000000000000) // Begin with the function selector. mstore(add(freeMemoryPointer, 4), and(to, 0xffffffffffffffffffffffffffffffffffffffff)) // Mask and append the "to" argument. mstore(add(freeMemoryPointer, 36), amount) // Finally append the "amount" argument. No mask as it's a full 32 byte value. // Call the token and store if it succeeded or not. // We use 68 because the calldata length is 4 + 32 * 2. callStatus := call(gas(), token, 0, freeMemoryPointer, 68, 0, 0) } require(didLastOptionalReturnCallSucceed(callStatus), "TRANSFER_FAILED"); } function safeApprove( ERC20 token, address to, uint256 amount ) internal { bool callStatus; assembly { // Get a pointer to some free memory. let freeMemoryPointer := mload(0x40) // Write the abi-encoded calldata to memory piece by piece: mstore(freeMemoryPointer, 0x095ea7b300000000000000000000000000000000000000000000000000000000) // Begin with the function selector. mstore(add(freeMemoryPointer, 4), and(to, 0xffffffffffffffffffffffffffffffffffffffff)) // Mask and append the "to" argument. mstore(add(freeMemoryPointer, 36), amount) // Finally append the "amount" argument. No mask as it's a full 32 byte value. // Call the token and store if it succeeded or not. // We use 68 because the calldata length is 4 + 32 * 2. callStatus := call(gas(), token, 0, freeMemoryPointer, 68, 0, 0) } require(didLastOptionalReturnCallSucceed(callStatus), "APPROVE_FAILED"); } /*/////////////////////////////////////////////////////////////// INTERNAL HELPER LOGIC //////////////////////////////////////////////////////////////*/ function didLastOptionalReturnCallSucceed(bool callStatus) private pure returns (bool success) { assembly { // Get how many bytes the call returned. let returnDataSize := returndatasize() // If the call reverted: if iszero(callStatus) { // Copy the revert message into memory. returndatacopy(0, 0, returnDataSize) // Revert with the same message. revert(0, returnDataSize) } switch returnDataSize case 32 { // Copy the return data into memory. returndatacopy(0, 0, returnDataSize) // Set success to whether it returned true. success := iszero(iszero(mload(0))) } case 0 { // There was no return data. success := 1 } default { // It returned some malformed input. success := 0 } } } } // File @openzeppelin/contracts/utils/[email protected] // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) /** * @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 @openzeppelin/contracts/access/[email protected] // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File contracts/core/RLBTRFLY.sol // SPDX-License-Identifier: MIT pragma solidity 0.8.12; /// @title RLBTRFLY /// @author ████ /** @notice Partially adapted from Convex's CvxLockerV2 contract with some modifications and optimizations for the BTRFLY V2 requirements */ contract RLBTRFLY is ReentrancyGuard, Ownable { using SafeTransferLib for ERC20; /** @notice Lock balance details @param amount uint224 Locked amount in the lock @param unlockTime uint32 Unlock time of the lock */ struct LockedBalance { uint224 amount; uint32 unlockTime; } /** @notice Balance details @param locked uint224 Overall locked amount @param nextUnlockIndex uint32 Index of earliest next unlock @param lockedBalances LockedBalance[] List of locked balances data */ struct Balance { uint224 locked; uint32 nextUnlockIndex; LockedBalance[] lockedBalances; } // 1 epoch = 1 week uint32 public constant EPOCH_DURATION = 1 weeks; // Full lock duration = 16 epochs uint256 public constant LOCK_DURATION = 16 * EPOCH_DURATION; ERC20 public immutable btrflyV2; uint256 public lockedSupply; mapping(address => Balance) public balances; bool public isShutdown; string public constant name = "Revenue-Locked BTRFLY"; string public constant symbol = "rlBTRFLY"; uint8 public constant decimals = 18; event Shutdown(); event Locked( address indexed account, uint256 indexed epoch, uint256 amount ); event Withdrawn(address indexed account, uint256 amount, bool relock); error ZeroAddress(); error ZeroAmount(); error IsShutdown(); error InvalidNumber(uint256 value); /** @param _btrflyV2 address BTRFLYV2 token address */ constructor(address _btrflyV2) { if (_btrflyV2 == address(0)) revert ZeroAddress(); btrflyV2 = ERC20(_btrflyV2); } /** @notice Emergency method to shutdown the current locker contract which also force-unlock all locked tokens */ function shutdown() external onlyOwner { if (isShutdown) revert IsShutdown(); isShutdown = true; emit Shutdown(); } /** @notice Locked balance of the specified account including those with expired locks @param account address Account @return amount uint256 Amount */ function lockedBalanceOf(address account) external view returns (uint256 amount) { return balances[account].locked; } /** @notice Balance of the specified account by only including tokens in active locks @param account address Account @return amount uint256 Amount */ function balanceOf(address account) external view returns (uint256 amount) { // Using storage as it's actually cheaper than allocating a new memory based variable Balance storage userBalance = balances[account]; LockedBalance[] storage locks = userBalance.lockedBalances; uint256 nextUnlockIndex = userBalance.nextUnlockIndex; amount = balances[account].locked; uint256 locksLength = locks.length; // Skip all old records for (uint256 i = nextUnlockIndex; i < locksLength; ++i) { if (locks[i].unlockTime <= block.timestamp) { amount -= locks[i].amount; } else { break; } } // Remove amount locked in the next epoch if ( locksLength > 0 && uint256(locks[locksLength - 1].unlockTime) - LOCK_DURATION > getCurrentEpoch() ) { amount -= locks[locksLength - 1].amount; } return amount; } /** @notice Pending locked amount at the specified account @param account address Account @return amount uint256 Amount */ function pendingLockOf(address account) external view returns (uint256 amount) { LockedBalance[] storage locks = balances[account].lockedBalances; uint256 locksLength = locks.length; if ( locksLength > 0 && uint256(locks[locksLength - 1].unlockTime) - LOCK_DURATION > getCurrentEpoch() ) { return locks[locksLength - 1].amount; } return 0; } /** @notice Locked balances details for the specifed account @param account address Account @return total uint256 Total amount @return unlockable uint256 Unlockable amount @return locked uint256 Locked amount @return lockData LockedBalance[] List of active locks */ function lockedBalances(address account) external view returns ( uint256 total, uint256 unlockable, uint256 locked, LockedBalance[] memory lockData ) { Balance storage userBalance = balances[account]; LockedBalance[] storage locks = userBalance.lockedBalances; uint256 nextUnlockIndex = userBalance.nextUnlockIndex; uint256 idx; for (uint256 i = nextUnlockIndex; i < locks.length; ++i) { if (locks[i].unlockTime > block.timestamp) { if (idx == 0) { lockData = new LockedBalance[](locks.length - i); } lockData[idx] = locks[i]; locked += lockData[idx].amount; ++idx; } else { unlockable += locks[i].amount; } } return (userBalance.locked, unlockable, locked, lockData); } /** @notice Get current epoch @return uint256 Current epoch */ function getCurrentEpoch() public view returns (uint256) { return (block.timestamp / EPOCH_DURATION) * EPOCH_DURATION; } /** @notice Locked tokens cannot be withdrawn for the entire lock duration and are eligible to receive rewards @param account address Account @param amount uint256 Amount */ function lock(address account, uint256 amount) external nonReentrant { if (account == address(0)) revert ZeroAddress(); if (amount == 0) revert ZeroAmount(); btrflyV2.safeTransferFrom(msg.sender, address(this), amount); _lock(account, amount); } /** @notice Perform the actual lock @param account address Account @param amount uint256 Amount */ function _lock(address account, uint256 amount) internal { if (isShutdown) revert IsShutdown(); Balance storage balance = balances[account]; uint224 lockAmount = _toUint224(amount); balance.locked += lockAmount; lockedSupply += lockAmount; uint256 lockEpoch = getCurrentEpoch() + EPOCH_DURATION; uint256 unlockTime = lockEpoch + LOCK_DURATION; LockedBalance[] storage locks = balance.lockedBalances; uint256 idx = locks.length; // If the latest user lock is smaller than this lock, add a new entry to the end of the list // else, append it to the latest user lock if (idx == 0 || locks[idx - 1].unlockTime < unlockTime) { locks.push( LockedBalance({ amount: lockAmount, unlockTime: _toUint32(unlockTime) }) ); } else { locks[idx - 1].amount += lockAmount; } emit Locked(account, lockEpoch, amount); } /** @notice Withdraw all currently locked tokens where the unlock time has passed @param account address Account @param relock bool Whether should relock @param withdrawTo address Target receiver */ function _processExpiredLocks( address account, bool relock, address withdrawTo ) internal { // Using storage as it's actually cheaper than allocating a new memory based variable Balance storage userBalance = balances[account]; LockedBalance[] storage locks = userBalance.lockedBalances; uint224 locked; uint256 length = locks.length; if (isShutdown || locks[length - 1].unlockTime <= block.timestamp) { locked = userBalance.locked; userBalance.nextUnlockIndex = _toUint32(length); } else { // Using nextUnlockIndex to reduce the number of loops uint32 nextUnlockIndex = userBalance.nextUnlockIndex; for (uint256 i = nextUnlockIndex; i < length; ++i) { // Unlock time must be less or equal to time if (locks[i].unlockTime > block.timestamp) break; // Add to cumulative amounts locked += locks[i].amount; ++nextUnlockIndex; } // Update the account's next unlock index userBalance.nextUnlockIndex = nextUnlockIndex; } if (locked == 0) revert ZeroAmount(); // Update user balances and total supplies userBalance.locked -= locked; lockedSupply -= locked; emit Withdrawn(account, locked, relock); // Relock or return to user if (relock) { _lock(withdrawTo, locked); } else { btrflyV2.safeTransfer(withdrawTo, locked); } } /** @notice Withdraw expired locks to a different address @param to address Target receiver */ function withdrawExpiredLocksTo(address to) external nonReentrant { if (to == address(0)) revert ZeroAddress(); _processExpiredLocks(msg.sender, false, to); } /** @notice Withdraw/relock all currently locked tokens where the unlock time has passed @param relock bool Whether should relock */ function processExpiredLocks(bool relock) external nonReentrant { _processExpiredLocks(msg.sender, relock, msg.sender); } /** @notice Validate and cast a uint256 integer to uint224 @param value uint256 Value @return uint224 Casted value */ function _toUint224(uint256 value) internal pure returns (uint224) { if (value > type(uint224).max) revert InvalidNumber(value); return uint224(value); } /** @notice Validate and cast a uint256 integer to uint32 @param value uint256 Value @return uint32 Casted value */ function _toUint32(uint256 value) internal pure returns (uint32) { if (value > type(uint32).max) revert InvalidNumber(value); return uint32(value); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_btrflyV2","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"InvalidNumber","type":"error"},{"inputs":[],"name":"IsShutdown","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"inputs":[],"name":"ZeroAmount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"uint256","name":"epoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Locked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"Shutdown","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"relock","type":"bool"}],"name":"Withdrawn","type":"event"},{"inputs":[],"name":"EPOCH_DURATION","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LOCK_DURATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balances","outputs":[{"internalType":"uint224","name":"locked","type":"uint224"},{"internalType":"uint32","name":"nextUnlockIndex","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"btrflyV2","outputs":[{"internalType":"contract ERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isShutdown","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"lockedBalanceOf","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"lockedBalances","outputs":[{"internalType":"uint256","name":"total","type":"uint256"},{"internalType":"uint256","name":"unlockable","type":"uint256"},{"internalType":"uint256","name":"locked","type":"uint256"},{"components":[{"internalType":"uint224","name":"amount","type":"uint224"},{"internalType":"uint32","name":"unlockTime","type":"uint32"}],"internalType":"struct RLBTRFLY.LockedBalance[]","name":"lockData","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockedSupply","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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"pendingLockOf","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"relock","type":"bool"}],"name":"processExpiredLocks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"shutdown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"withdrawExpiredLocksTo","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a0604052600160005534801561001557600080fd5b50604051611627380380611627833981016040819052610034916100c7565b61003d33610075565b6001600160a01b0381166100645760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03166080526100f7565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156100d957600080fd5b81516001600160a01b03811681146100f057600080fd5b9392505050565b608051611507610120600039600081816102c20152818161061f015261100701526115076000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c8063715018a6116100b8578063b97dd9e21161007c578063b97dd9e214610353578063bf86d6901461035b578063ca5c7b9114610378578063d36f12fb14610381578063f2fde38b14610394578063fc0e74d1146103a757600080fd5b8063715018a6146102b557806380afa51f146102bd5780638da5cb5b146102fc57806395d89b411461030d578063a70b9f0c1461033457600080fd5b8063313ce567116100ff578063313ce5671461022d578063485d383414610247578063593557361461025d57806368edd2bb1461028f57806370a08231146102a257600080fd5b80630483a7f61461013c57806306fdde031461016857806327e235e3146101a9578063282d3fdf14610205578063312ff8391461021a575b600080fd5b61014f61014a3660046111cf565b6103af565b60405161015f94939291906111f1565b60405180910390f35b61019c60405180604001604052806015815260200174526576656e75652d4c6f636b656420425452464c5960581b81525081565b60405161015f9190611267565b6101e16101b73660046111cf565b6003602052600090815260409020546001600160e01b03811690600160e01b900463ffffffff1682565b604080516001600160e01b03909316835263ffffffff90911660208301520161015f565b6102186102133660046112bc565b61059d565b005b6102186102283660046112e6565b61065a565b610235601281565b60405160ff909116815260200161015f565b61024f610694565b60405190815260200161015f565b61024f61026b3660046111cf565b6001600160a01b03166000908152600360205260409020546001600160e01b031690565b61024f61029d3660046111cf565b6106ab565b61024f6102b03660046111cf565b610777565b6102186108ee565b6102e47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161015f565b6001546001600160a01b03166102e4565b61019c60405180604001604052806008815260200167726c425452464c5960c01b81525081565b61033e62093a8081565b60405163ffffffff909116815260200161015f565b61024f610924565b6004546103689060ff1681565b604051901515815260200161015f565b61024f60025481565b61021861038f3660046111cf565b610943565b6102186103a23660046111cf565b61099d565b610218610a38565b6001600160a01b0381166000908152600360205260408120805482918291606091906001820190600160e01b900463ffffffff1684815b8354811015610585574284828154811061040257610402611308565b600091825260209091200154600160e01b900463ffffffff1611156105415781610494578354610433908290611334565b67ffffffffffffffff81111561044b5761044b61134b565b60405190808252806020026020018201604052801561049057816020015b60408051808201909152600080825260208201528152602001906001900390816104695790505b5095505b8381815481106104a6576104a6611308565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff169181019190915286518790849081106104f2576104f2611308565b602002602001018190525085828151811061050f5761050f611308565b6020026020010151600001516001600160e01b03168761052f9190611361565b965061053a82611379565b9150610575565b83818154811061055357610553611308565b600091825260209091200154610572906001600160e01b031689611361565b97505b61057e81611379565b90506103e6565b505091546001600160e01b0316955050509193509193565b6000546001146105c85760405162461bcd60e51b81526004016105bf90611394565b60405180910390fd5b60026000556001600160a01b0382166105f45760405163d92e233d60e01b815260040160405180910390fd5b8061061257604051631f2a200560e01b815260040160405180910390fd5b6106476001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084610abe565b6106518282610b52565b50506001600055565b60005460011461067c5760405162461bcd60e51b81526004016105bf90611394565b600260005561068c338281610da2565b506001600055565b6106a262093a8060106113b8565b63ffffffff1681565b6001600160a01b03811660009081526003602052604081206001018054801580159061072f57506106da610924565b6106e862093a8060106113b8565b63ffffffff16836106fa600185611334565b8154811061070a5761070a611308565b60009182526020909120015461072d9190600160e01b900463ffffffff16611334565b115b1561076d5781610740600183611334565b8154811061075057610750611308565b6000918252602090912001546001600160e01b0316949350505050565b5060009392505050565b6001600160a01b038116600090815260036020526040902080546001820180546001600160e01b0383169392600160e01b900463ffffffff1690815b8181101561083957428482815481106107ce576107ce611308565b600091825260209091200154600160e01b900463ffffffff1611610824578381815481106107fe576107fe611308565b60009182526020909120015461081d906001600160e01b031687611334565b9550610829565b610839565b61083281611379565b90506107b3565b506000811180156108a2575061084d610924565b61085b62093a8060106113b8565b63ffffffff168461086d600185611334565b8154811061087d5761087d611308565b6000918252602090912001546108a09190600160e01b900463ffffffff16611334565b115b156108e557826108b3600183611334565b815481106108c3576108c3611308565b6000918252602090912001546108e2906001600160e01b031686611334565b94505b50505050919050565b6001546001600160a01b031633146109185760405162461bcd60e51b81526004016105bf906113e4565b6109226000611040565b565b600062093a806109348142611419565b61093e919061143b565b905090565b6000546001146109655760405162461bcd60e51b81526004016105bf90611394565b60026000556001600160a01b0381166109915760405163d92e233d60e01b815260040160405180910390fd5b61068c33600083610da2565b6001546001600160a01b031633146109c75760405162461bcd60e51b81526004016105bf906113e4565b6001600160a01b038116610a2c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105bf565b610a3581611040565b50565b6001546001600160a01b03163314610a625760405162461bcd60e51b81526004016105bf906113e4565b60045460ff1615610a8657604051631b0e923f60e11b815260040160405180910390fd5b6004805460ff191660011790556040517f4426aa1fb73e391071491fcfe21a88b5c38a0a0333a1f6e77161470439704cf890600090a1565b60006040516323b872dd60e01b81526001600160a01b03851660048201526001600160a01b038416602482015282604482015260008060648360008a5af1915050610b0881611092565b610b4b5760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b60448201526064016105bf565b5050505050565b60045460ff1615610b7657604051631b0e923f60e11b815260040160405180910390fd5b6001600160a01b038216600090815260036020526040812090610b98836110d9565b825490915081908390600090610bb89084906001600160e01b031661145a565b92506101000a8154816001600160e01b0302191690836001600160e01b03160217905550806001600160e01b031660026000828254610bf79190611361565b909155506000905062093a80610c0b610924565b610c159190611361565b90506000610c2762093a8060106113b8565b610c379063ffffffff1683611361565b60018501805491925090801580610c8157508282610c56600184611334565b81548110610c6657610c66611308565b600091825260209091200154600160e01b900463ffffffff16105b15610cef57816040518060400160405280876001600160e01b03168152602001610caa8661110a565b63ffffffff9081169091528254600181018455600093845260209384902083519490930151909116600160e01b026001600160e01b0390931692909217910155610d54565b8482610cfc600184611334565b81548110610d0c57610d0c611308565b600091825260208220018054909190610d2f9084906001600160e01b031661145a565b92506101000a8154816001600160e01b0302191690836001600160e01b031602179055505b83886001600160a01b03167fd4665e3049283582ba6f9eba07a5b3e12dab49e02da99e8927a47af5d134bea589604051610d9091815260200190565b60405180910390a35050505050505050565b6001600160a01b03831660009081526003602052604081206001810180546004549293919260ff1680610e0957504283610ddd600184611334565b81548110610ded57610ded611308565b600091825260209091200154600160e01b900463ffffffff1611155b15610e485783546001600160e01b03169150610e248161110a565b845463ffffffff91909116600160e01b026001600160e01b03909116178455610f06565b8354600160e01b900463ffffffff16805b82811015610ee65742858281548110610e7457610e74611308565b600091825260209091200154600160e01b900463ffffffff161115610e9857610ee6565b848181548110610eaa57610eaa611308565b600091825260209091200154610ec9906001600160e01b03168561145a565b9350610ed482611485565b9150610edf81611379565b9050610e59565b50845463ffffffff909116600160e01b026001600160e01b039091161784555b6001600160e01b038216610f2d57604051631f2a200560e01b815260040160405180910390fd5b835482908590600090610f4a9084906001600160e01b03166114a9565b92506101000a8154816001600160e01b0302191690836001600160e01b03160217905550816001600160e01b031660026000828254610f899190611334565b9091555050604080516001600160e01b038416815287151560208201526001600160a01b038916917f2fd83d5e9f5d240bed47a97a24cf354e4047e25edc2da27b01fd95e5e8a0c9a5910160405180910390a28515610ffa57610ff585836001600160e01b0316610b52565b611037565b6110376001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016866001600160e01b038516611134565b50505050505050565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60003d826110a457806000803e806000fd5b80602081146110bc5780156110cd57600092506110d2565b816000803e600051151592506110d2565b600192505b5050919050565b60006001600160e01b03821115611106576040516362ec1e6f60e11b8152600481018390526024016105bf565b5090565b600063ffffffff821115611106576040516362ec1e6f60e11b8152600481018390526024016105bf565b600060405163a9059cbb60e01b81526001600160a01b03841660048201528260248201526000806044836000895af191505061116f81611092565b6111ad5760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b60448201526064016105bf565b50505050565b80356001600160a01b03811681146111ca57600080fd5b919050565b6000602082840312156111e157600080fd5b6111ea826111b3565b9392505050565b60006080820186835260208681850152604086818601526080606086015282865180855260a087019150838801945060005b8181101561125757855180516001600160e01b0316845285015163ffffffff16858401529484019491830191600101611223565b50909a9950505050505050505050565b600060208083528351808285015260005b8181101561129457858101830151858201604001528201611278565b818111156112a6576000604083870101525b50601f01601f1916929092016040019392505050565b600080604083850312156112cf57600080fd5b6112d8836111b3565b946020939093013593505050565b6000602082840312156112f857600080fd5b813580151581146111ea57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156113465761134661131e565b500390565b634e487b7160e01b600052604160045260246000fd5b600082198211156113745761137461131e565b500190565b600060001982141561138d5761138d61131e565b5060010190565b6020808252600a90820152695245454e5452414e435960b01b604082015260600190565b600063ffffffff808316818516818304811182151516156113db576113db61131e565b02949350505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60008261143657634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156114555761145561131e565b500290565b60006001600160e01b0382811684821680830382111561147c5761147c61131e565b01949350505050565b600063ffffffff8083168181141561149f5761149f61131e565b6001019392505050565b60006001600160e01b03838116908316818110156114c9576114c961131e565b03939250505056fea26469706673582212205e049c757d9d5de1a8a2e92ab1fc10c819eb024f7be8bbdf4ad77c30e7e8b6b464736f6c634300080c0033000000000000000000000000c55126051b22ebb829d00368f4b12bde432de5da
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101375760003560e01c8063715018a6116100b8578063b97dd9e21161007c578063b97dd9e214610353578063bf86d6901461035b578063ca5c7b9114610378578063d36f12fb14610381578063f2fde38b14610394578063fc0e74d1146103a757600080fd5b8063715018a6146102b557806380afa51f146102bd5780638da5cb5b146102fc57806395d89b411461030d578063a70b9f0c1461033457600080fd5b8063313ce567116100ff578063313ce5671461022d578063485d383414610247578063593557361461025d57806368edd2bb1461028f57806370a08231146102a257600080fd5b80630483a7f61461013c57806306fdde031461016857806327e235e3146101a9578063282d3fdf14610205578063312ff8391461021a575b600080fd5b61014f61014a3660046111cf565b6103af565b60405161015f94939291906111f1565b60405180910390f35b61019c60405180604001604052806015815260200174526576656e75652d4c6f636b656420425452464c5960581b81525081565b60405161015f9190611267565b6101e16101b73660046111cf565b6003602052600090815260409020546001600160e01b03811690600160e01b900463ffffffff1682565b604080516001600160e01b03909316835263ffffffff90911660208301520161015f565b6102186102133660046112bc565b61059d565b005b6102186102283660046112e6565b61065a565b610235601281565b60405160ff909116815260200161015f565b61024f610694565b60405190815260200161015f565b61024f61026b3660046111cf565b6001600160a01b03166000908152600360205260409020546001600160e01b031690565b61024f61029d3660046111cf565b6106ab565b61024f6102b03660046111cf565b610777565b6102186108ee565b6102e47f000000000000000000000000c55126051b22ebb829d00368f4b12bde432de5da81565b6040516001600160a01b03909116815260200161015f565b6001546001600160a01b03166102e4565b61019c60405180604001604052806008815260200167726c425452464c5960c01b81525081565b61033e62093a8081565b60405163ffffffff909116815260200161015f565b61024f610924565b6004546103689060ff1681565b604051901515815260200161015f565b61024f60025481565b61021861038f3660046111cf565b610943565b6102186103a23660046111cf565b61099d565b610218610a38565b6001600160a01b0381166000908152600360205260408120805482918291606091906001820190600160e01b900463ffffffff1684815b8354811015610585574284828154811061040257610402611308565b600091825260209091200154600160e01b900463ffffffff1611156105415781610494578354610433908290611334565b67ffffffffffffffff81111561044b5761044b61134b565b60405190808252806020026020018201604052801561049057816020015b60408051808201909152600080825260208201528152602001906001900390816104695790505b5095505b8381815481106104a6576104a6611308565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff169181019190915286518790849081106104f2576104f2611308565b602002602001018190525085828151811061050f5761050f611308565b6020026020010151600001516001600160e01b03168761052f9190611361565b965061053a82611379565b9150610575565b83818154811061055357610553611308565b600091825260209091200154610572906001600160e01b031689611361565b97505b61057e81611379565b90506103e6565b505091546001600160e01b0316955050509193509193565b6000546001146105c85760405162461bcd60e51b81526004016105bf90611394565b60405180910390fd5b60026000556001600160a01b0382166105f45760405163d92e233d60e01b815260040160405180910390fd5b8061061257604051631f2a200560e01b815260040160405180910390fd5b6106476001600160a01b037f000000000000000000000000c55126051b22ebb829d00368f4b12bde432de5da16333084610abe565b6106518282610b52565b50506001600055565b60005460011461067c5760405162461bcd60e51b81526004016105bf90611394565b600260005561068c338281610da2565b506001600055565b6106a262093a8060106113b8565b63ffffffff1681565b6001600160a01b03811660009081526003602052604081206001018054801580159061072f57506106da610924565b6106e862093a8060106113b8565b63ffffffff16836106fa600185611334565b8154811061070a5761070a611308565b60009182526020909120015461072d9190600160e01b900463ffffffff16611334565b115b1561076d5781610740600183611334565b8154811061075057610750611308565b6000918252602090912001546001600160e01b0316949350505050565b5060009392505050565b6001600160a01b038116600090815260036020526040902080546001820180546001600160e01b0383169392600160e01b900463ffffffff1690815b8181101561083957428482815481106107ce576107ce611308565b600091825260209091200154600160e01b900463ffffffff1611610824578381815481106107fe576107fe611308565b60009182526020909120015461081d906001600160e01b031687611334565b9550610829565b610839565b61083281611379565b90506107b3565b506000811180156108a2575061084d610924565b61085b62093a8060106113b8565b63ffffffff168461086d600185611334565b8154811061087d5761087d611308565b6000918252602090912001546108a09190600160e01b900463ffffffff16611334565b115b156108e557826108b3600183611334565b815481106108c3576108c3611308565b6000918252602090912001546108e2906001600160e01b031686611334565b94505b50505050919050565b6001546001600160a01b031633146109185760405162461bcd60e51b81526004016105bf906113e4565b6109226000611040565b565b600062093a806109348142611419565b61093e919061143b565b905090565b6000546001146109655760405162461bcd60e51b81526004016105bf90611394565b60026000556001600160a01b0381166109915760405163d92e233d60e01b815260040160405180910390fd5b61068c33600083610da2565b6001546001600160a01b031633146109c75760405162461bcd60e51b81526004016105bf906113e4565b6001600160a01b038116610a2c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105bf565b610a3581611040565b50565b6001546001600160a01b03163314610a625760405162461bcd60e51b81526004016105bf906113e4565b60045460ff1615610a8657604051631b0e923f60e11b815260040160405180910390fd5b6004805460ff191660011790556040517f4426aa1fb73e391071491fcfe21a88b5c38a0a0333a1f6e77161470439704cf890600090a1565b60006040516323b872dd60e01b81526001600160a01b03851660048201526001600160a01b038416602482015282604482015260008060648360008a5af1915050610b0881611092565b610b4b5760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b60448201526064016105bf565b5050505050565b60045460ff1615610b7657604051631b0e923f60e11b815260040160405180910390fd5b6001600160a01b038216600090815260036020526040812090610b98836110d9565b825490915081908390600090610bb89084906001600160e01b031661145a565b92506101000a8154816001600160e01b0302191690836001600160e01b03160217905550806001600160e01b031660026000828254610bf79190611361565b909155506000905062093a80610c0b610924565b610c159190611361565b90506000610c2762093a8060106113b8565b610c379063ffffffff1683611361565b60018501805491925090801580610c8157508282610c56600184611334565b81548110610c6657610c66611308565b600091825260209091200154600160e01b900463ffffffff16105b15610cef57816040518060400160405280876001600160e01b03168152602001610caa8661110a565b63ffffffff9081169091528254600181018455600093845260209384902083519490930151909116600160e01b026001600160e01b0390931692909217910155610d54565b8482610cfc600184611334565b81548110610d0c57610d0c611308565b600091825260208220018054909190610d2f9084906001600160e01b031661145a565b92506101000a8154816001600160e01b0302191690836001600160e01b031602179055505b83886001600160a01b03167fd4665e3049283582ba6f9eba07a5b3e12dab49e02da99e8927a47af5d134bea589604051610d9091815260200190565b60405180910390a35050505050505050565b6001600160a01b03831660009081526003602052604081206001810180546004549293919260ff1680610e0957504283610ddd600184611334565b81548110610ded57610ded611308565b600091825260209091200154600160e01b900463ffffffff1611155b15610e485783546001600160e01b03169150610e248161110a565b845463ffffffff91909116600160e01b026001600160e01b03909116178455610f06565b8354600160e01b900463ffffffff16805b82811015610ee65742858281548110610e7457610e74611308565b600091825260209091200154600160e01b900463ffffffff161115610e9857610ee6565b848181548110610eaa57610eaa611308565b600091825260209091200154610ec9906001600160e01b03168561145a565b9350610ed482611485565b9150610edf81611379565b9050610e59565b50845463ffffffff909116600160e01b026001600160e01b039091161784555b6001600160e01b038216610f2d57604051631f2a200560e01b815260040160405180910390fd5b835482908590600090610f4a9084906001600160e01b03166114a9565b92506101000a8154816001600160e01b0302191690836001600160e01b03160217905550816001600160e01b031660026000828254610f899190611334565b9091555050604080516001600160e01b038416815287151560208201526001600160a01b038916917f2fd83d5e9f5d240bed47a97a24cf354e4047e25edc2da27b01fd95e5e8a0c9a5910160405180910390a28515610ffa57610ff585836001600160e01b0316610b52565b611037565b6110376001600160a01b037f000000000000000000000000c55126051b22ebb829d00368f4b12bde432de5da16866001600160e01b038516611134565b50505050505050565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60003d826110a457806000803e806000fd5b80602081146110bc5780156110cd57600092506110d2565b816000803e600051151592506110d2565b600192505b5050919050565b60006001600160e01b03821115611106576040516362ec1e6f60e11b8152600481018390526024016105bf565b5090565b600063ffffffff821115611106576040516362ec1e6f60e11b8152600481018390526024016105bf565b600060405163a9059cbb60e01b81526001600160a01b03841660048201528260248201526000806044836000895af191505061116f81611092565b6111ad5760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b60448201526064016105bf565b50505050565b80356001600160a01b03811681146111ca57600080fd5b919050565b6000602082840312156111e157600080fd5b6111ea826111b3565b9392505050565b60006080820186835260208681850152604086818601526080606086015282865180855260a087019150838801945060005b8181101561125757855180516001600160e01b0316845285015163ffffffff16858401529484019491830191600101611223565b50909a9950505050505050505050565b600060208083528351808285015260005b8181101561129457858101830151858201604001528201611278565b818111156112a6576000604083870101525b50601f01601f1916929092016040019392505050565b600080604083850312156112cf57600080fd5b6112d8836111b3565b946020939093013593505050565b6000602082840312156112f857600080fd5b813580151581146111ea57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156113465761134661131e565b500390565b634e487b7160e01b600052604160045260246000fd5b600082198211156113745761137461131e565b500190565b600060001982141561138d5761138d61131e565b5060010190565b6020808252600a90820152695245454e5452414e435960b01b604082015260600190565b600063ffffffff808316818516818304811182151516156113db576113db61131e565b02949350505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60008261143657634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156114555761145561131e565b500290565b60006001600160e01b0382811684821680830382111561147c5761147c61131e565b01949350505050565b600063ffffffff8083168181141561149f5761149f61131e565b6001019392505050565b60006001600160e01b03838116908316818110156114c9576114c961131e565b03939250505056fea26469706673582212205e049c757d9d5de1a8a2e92ab1fc10c819eb024f7be8bbdf4ad77c30e7e8b6b464736f6c634300080c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000c55126051b22ebb829d00368f4b12bde432de5da
-----Decoded View---------------
Arg [0] : _btrflyV2 (address): 0xc55126051B22eBb829D00368f4B12Bde432de5Da
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000c55126051b22ebb829d00368f4b12bde432de5da
Deployed Bytecode Sourcemap
17024:11009:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21823:999;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;18149:53;;;;;;;;;;;;;;;-1:-1:-1;;;18149:53:0;;;;;;;;;;;;:::i;18066:43::-;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;18066:43:0;;;-1:-1:-1;;;18066:43:0;;;;;;;;;;-1:-1:-1;;;;;2237:32:1;;;2219:51;;2318:10;2306:23;;;2301:2;2286:18;;2279:51;2192:18;18066:43:0;2047:289:1;23284:290:0;;;;;;:::i;:::-;;:::i;:::-;;27194:135;;;;;;:::i;:::-;;:::i;18258:35::-;;18291:2;18258:35;;;;;3050:4:1;3038:17;;;3020:36;;3008:2;2993:18;18258:35:0;2878:184:1;17922:59:0;;;:::i;:::-;;;3213:25:1;;;3201:2;3186:18;17922:59:0;3067:177:1;19350:163:0;;;;;;:::i;:::-;-1:-1:-1;;;;;19481:17:0;19442:14;19481:17;;;:8;:17;;;;;:24;-1:-1:-1;;;;;19481:24:0;;19350:163;20937:490;;;;;;:::i;:::-;;:::i;19715:1047::-;;;;;;:::i;:::-;;:::i;15896:103::-;;;:::i;17990:31::-;;;;;;;;-1:-1:-1;;;;;3426:32:1;;;3408:51;;3396:2;3381:18;17990:31:0;3249:216:1;15245:87:0;15318:6;;-1:-1:-1;;;;;15318:6:0;15245:87;;18209:42;;;;;;;;;;;;;;;-1:-1:-1;;;18209:42:0;;;;;17829:47;;17869:7;17829:47;;;;;3852:10:1;3840:23;;;3822:42;;3810:2;3795:18;17829:47:0;3678:192:1;22923:134:0;;;:::i;18118:22::-;;;;;;;;;;;;4040:14:1;;4033:22;4015:41;;4003:2;3988:18;18118:22:0;3875:187:1;18030:27:0;;;;;;26838:183;;;;;;:::i;:::-;;:::i;16154:201::-;;;;;;:::i;:::-;;:::i;18996:151::-;;;:::i;21823:999::-;-1:-1:-1;;;;;22107:17:0;;21928:13;22107:17;;;:8;:17;;;;;22230:27;;21928:13;;;;22018:31;;22107:17;22167:26;;;;-1:-1:-1;;;22230:27:0;;;;21928:13;22230:27;22292:453;22330:12;;22326:16;;22292:453;;;22390:15;22368:5;22374:1;22368:8;;;;;;;;:::i;:::-;;;;;;;;;;:19;-1:-1:-1;;;22368:19:0;;;;:37;22364:370;;;22430:8;22426:105;;22494:12;;:16;;22509:1;;22494:16;:::i;:::-;22474:37;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;22474:37:0;;;;;;;;;;;;;;;;22463:48;;22426:105;22567:5;22573:1;22567:8;;;;;;;;:::i;:::-;;;;;;;;;;22551:24;;;;;;;;;22567:8;;22551:24;-1:-1:-1;;;;;22551:24:0;;;;-1:-1:-1;;;22551:24:0;;;;;;;;;;;:13;;;;22560:3;;22551:13;;;;;;:::i;:::-;;;;;;:24;;;;22604:8;22613:3;22604:13;;;;;;;;:::i;:::-;;;;;;;:20;;;-1:-1:-1;;;;;22594:30:0;;;;;;:::i;:::-;;-1:-1:-1;22643:5:0;;;:::i;:::-;;;22364:370;;;22703:5;22709:1;22703:8;;;;;;;;:::i;:::-;;;;;;;;;;:15;22689:29;;-1:-1:-1;;;;;22703:15:0;22689:29;;:::i;:::-;;;22364:370;22344:3;;;:::i;:::-;;;22292:453;;;-1:-1:-1;;22765:18:0;;-1:-1:-1;;;;;22765:18:0;;-1:-1:-1;;;21823:999:0;;;;;:::o;23284:290::-;590:16;;610:1;590:21;582:44;;;;-1:-1:-1;;;582:44:0;;;;;;;:::i;:::-;;;;;;;;;658:1;639:16;:20;-1:-1:-1;;;;;23368:21:0;::::1;23364:47;;23398:13;;-1:-1:-1::0;;;23398:13:0::1;;;;;;;;;;;23364:47;23426:11:::0;23422:36:::1;;23446:12;;-1:-1:-1::0;;;23446:12:0::1;;;;;;;;;;;23422:36;23471:60;-1:-1:-1::0;;;;;23471:8:0::1;:25;23497:10;23517:4;23524:6:::0;23471:25:::1;:60::i;:::-;23544:22;23550:7;23559:6;23544:5;:22::i;:::-;-1:-1:-1::0;;705:1:0;686:16;:20;23284:290::o;27194:135::-;590:16;;610:1;590:21;582:44;;;;-1:-1:-1;;;582:44:0;;;;;;;:::i;:::-;658:1;639:16;:20;27269:52:::1;27290:10;27302:6:::0;27290:10;27269:20:::1;:52::i;:::-;-1:-1:-1::0;705:1:0;686:16;:20;27194:135::o;17922:59::-;17962:19;17869:7;17962:2;:19;:::i;:::-;17922:59;;;:::o;20937:490::-;-1:-1:-1;;;;;21091:17:0;;21027:14;21091:17;;;:8;:17;;;;;:32;;21158:12;;21201:15;;;;;:123;;;21307:17;:15;:17::i;:::-;17962:19;17869:7;17962:2;:19;:::i;:::-;21278:13;;21241:5;21247:15;21261:1;21247:11;:15;:::i;:::-;21241:22;;;;;;;;:::i;:::-;;;;;;;;;;:33;21233:58;;;-1:-1:-1;;;21241:33:0;;;;21233:58;:::i;:::-;:91;21201:123;21183:216;;;21358:5;21364:15;21378:1;21364:11;:15;:::i;:::-;21358:22;;;;;;;;:::i;:::-;;;;;;;;;;:29;-1:-1:-1;;;;;21358:29:0;;20937:490;-1:-1:-1;;;;20937:490:0:o;21183:216::-;-1:-1:-1;21418:1:0;;20937:490;-1:-1:-1;;;20937:490:0:o;19715:1047::-;-1:-1:-1;;;;;19926:17:0;;19774:14;19926:17;;;:8;:17;;;;;20049:27;;19986:26;;;20157:12;;-1:-1:-1;;;;;20098:24:0;;;19926:17;-1:-1:-1;;;20049:27:0;;;;;;20215:232;20253:11;20249:1;:15;20215:232;;;20313:15;20290:5;20296:1;20290:8;;;;;;;;:::i;:::-;;;;;;;;;;:19;-1:-1:-1;;;20290:19:0;;;;:38;20286:150;;20359:5;20365:1;20359:8;;;;;;;;:::i;:::-;;;;;;;;;;:15;20349:25;;-1:-1:-1;;;;;20359:15:0;20349:25;;:::i;:::-;;;20286:150;;;20415:5;;20286:150;20266:3;;;:::i;:::-;;;20215:232;;;;20542:1;20528:11;:15;:123;;;;;20634:17;:15;:17::i;:::-;17962:19;17869:7;17962:2;:19;:::i;:::-;20605:13;;20568:5;20574:15;20588:1;20574:11;:15;:::i;:::-;20568:22;;;;;;;;:::i;:::-;;;;;;;;;;:33;20560:58;;;-1:-1:-1;;;20568:33:0;;;;20560:58;:::i;:::-;:91;20528:123;20510:219;;;20688:5;20694:15;20708:1;20694:11;:15;:::i;:::-;20688:22;;;;;;;;:::i;:::-;;;;;;;;;;:29;20678:39;;-1:-1:-1;;;;;20688:29:0;20678:39;;:::i;:::-;;;20510:219;20741:13;;;;19715:1047;;;:::o;15896:103::-;15318:6;;-1:-1:-1;;;;;15318:6:0;14070:10;15465:23;15457:68;;;;-1:-1:-1;;;15457:68:0;;;;;;;:::i;:::-;15961:30:::1;15988:1;15961:18;:30::i;:::-;15896:103::o:0;22923:134::-;22971:7;17869;22999:32;17869:7;22999:15;:32;:::i;:::-;22998:51;;;;:::i;:::-;22991:58;;22923:134;:::o;26838:183::-;590:16;;610:1;590:21;582:44;;;;-1:-1:-1;;;582:44:0;;;;;;;:::i;:::-;658:1;639:16;:20;-1:-1:-1;;;;;26919:16:0;::::1;26915:42;;26944:13;;-1:-1:-1::0;;;26944:13:0::1;;;;;;;;;;;26915:42;26970:43;26991:10;27003:5;27010:2;26970:20;:43::i;16154:201::-:0;15318:6;;-1:-1:-1;;;;;15318:6:0;14070:10;15465:23;15457:68;;;;-1:-1:-1;;;15457:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16243:22:0;::::1;16235:73;;;::::0;-1:-1:-1;;;16235:73:0;;6430:2:1;16235:73:0::1;::::0;::::1;6412:21:1::0;6469:2;6449:18;;;6442:30;6508:34;6488:18;;;6481:62;-1:-1:-1;;;6559:18:1;;;6552:36;6605:19;;16235:73:0::1;6228:402:1::0;16235:73:0::1;16319:28;16338:8;16319:18;:28::i;:::-;16154:201:::0;:::o;18996:151::-;15318:6;;-1:-1:-1;;;;;15318:6:0;14070:10;15465:23;15457:68;;;;-1:-1:-1;;;15457:68:0;;;;;;;:::i;:::-;19050:10:::1;::::0;::::1;;19046:35;;;19069:12;;-1:-1:-1::0;;;19069:12:0::1;;;;;;;;;;;19046:35;19094:10;:17:::0;;-1:-1:-1;;19094:17:0::1;19107:4;19094:17;::::0;;19129:10:::1;::::0;::::1;::::0;19094::::1;::::0;19129::::1;18996:151::o:0;8666:1242::-;8810:15;8944:4;8938:11;-1:-1:-1;;;9045:17:0;9038:93;-1:-1:-1;;;;;9220:4:0;9216:53;9212:1;9193:17;9189:25;9182:88;-1:-1:-1;;;;;9363:2:0;9359:51;9354:2;9335:17;9331:26;9324:87;9498:6;9493:2;9474:17;9470:26;9463:42;9798:1;9795;9790:3;9771:17;9768:1;9761:5;9754;9749:51;9735:65;;;9831:44;9864:10;9831:32;:44::i;:::-;9823:77;;;;-1:-1:-1;;;9823:77:0;;6837:2:1;9823:77:0;;;6819:21:1;6876:2;6856:18;;;6849:30;-1:-1:-1;;;6895:18:1;;;6888:50;6955:18;;9823:77:0;6635:344:1;9823:77:0;8799:1109;8666:1242;;;;:::o;23726:1067::-;23798:10;;;;23794:35;;;23817:12;;-1:-1:-1;;;23817:12:0;;;;;;;;;;;23794:35;-1:-1:-1;;;;;23868:17:0;;23842:23;23868:17;;;:8;:17;;;;;;23919:18;23930:6;23919:10;:18::i;:::-;23950:28;;23898:39;;-1:-1:-1;23898:39:0;;23950:7;;:14;;:28;;23898:39;;-1:-1:-1;;;;;23950:28:0;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;23950:28:0;;;;;-1:-1:-1;;;;;23950:28:0;;;;;;24005:10;-1:-1:-1;;;;;23989:26:0;:12;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;24028:17:0;;-1:-1:-1;17869:7:0;24048:17;:15;:17::i;:::-;:34;;;;:::i;:::-;24028:54;-1:-1:-1;24093:18:0;17962:19;17869:7;17962:2;:19;:::i;:::-;24114:25;;24126:13;;24114:9;:25;:::i;:::-;24182:22;;;24229:12;;24093:46;;-1:-1:-1;24182:22:0;24412:8;;;:50;;-1:-1:-1;24452:10:0;24424:5;24430:7;24436:1;24430:3;:7;:::i;:::-;24424:14;;;;;;;;:::i;:::-;;;;;;;;;;:25;-1:-1:-1;;;24424:25:0;;;;:38;24412:50;24408:326;;;24479:5;24508:131;;;;;;;;24553:10;-1:-1:-1;;;;;24508:131:0;;;;;24598:21;24608:10;24598:9;:21::i;:::-;24508:131;;;;;;;24479:175;;;;;;;-1:-1:-1;24479:175:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;24479:175:0;-1:-1:-1;;;;;24479:175:0;;;;;;;;;;24408:326;;;24712:10;24687:5;24693:7;24699:1;24693:3;:7;:::i;:::-;24687:14;;;;;;;;:::i;:::-;;;;;;;;;:35;;:14;;;:35;;;;-1:-1:-1;;;;;24687:35:0;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;24687:35:0;;;;;-1:-1:-1;;;;;24687:35:0;;;;;;24408:326;24767:9;24758:7;-1:-1:-1;;;;;24751:34:0;;24778:6;24751:34;;;;3213:25:1;;3201:2;3186:18;;3067:177;24751:34:0;;;;;;;;23783:1010;;;;;;23726:1067;;:::o;25066:1637::-;-1:-1:-1;;;;;25325:17:0;;25295:27;25325:17;;;:8;:17;;;;;25385:26;;;25464:12;;25493:10;;25325:17;;25385:26;;25493:10;;;:61;;-1:-1:-1;25539:15:0;25507:5;25513:10;25522:1;25513:6;:10;:::i;:::-;25507:17;;;;;;;;:::i;:::-;;;;;;;;;;:28;-1:-1:-1;;;25507:28:0;;;;:47;;25493:61;25489:793;;;25580:18;;-1:-1:-1;;;;;25580:18:0;;-1:-1:-1;25643:17:0;25653:6;25643:9;:17::i;:::-;25613:47;;;;;;;-1:-1:-1;;;25613:47:0;-1:-1:-1;;;;;25613:47:0;;;;;;25489:793;;;25786:27;;-1:-1:-1;;;25786:27:0;;;;;25830:324;25868:6;25864:1;:10;25830:324;;;25988:15;25966:5;25972:1;25966:8;;;;;;;;:::i;:::-;;;;;;;;;;:19;-1:-1:-1;;;25966:19:0;;;;:37;25962:48;;;26005:5;;25962:48;26087:5;26093:1;26087:8;;;;;;;;:::i;:::-;;;;;;;;;;:15;26077:25;;-1:-1:-1;;;;;26087:15:0;26077:25;;:::i;:::-;;-1:-1:-1;26121:17:0;;;:::i;:::-;;-1:-1:-1;25876:3:0;;;:::i;:::-;;;25830:324;;;-1:-1:-1;26225:45:0;;;;;;-1:-1:-1;;;26225:45:0;-1:-1:-1;;;;;26225:45:0;;;;;;25489:793;-1:-1:-1;;;;;26298:11:0;;26294:36;;26318:12;;-1:-1:-1;;;26318:12:0;;;;;;;;;;;26294:36;26395:28;;26417:6;;26395:11;;:18;;:28;;26417:6;;-1:-1:-1;;;;;26395:28:0;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;26395:28:0;;;;;-1:-1:-1;;;;;26395:28:0;;;;;;26450:6;-1:-1:-1;;;;;26434:22:0;:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;26474:34:0;;;-1:-1:-1;;;;;7855:32:1;;7837:51;;7931:14;;7924:22;7919:2;7904:18;;7897:50;-1:-1:-1;;;;;26474:34:0;;;;;7810:18:1;26474:34:0;;;;;;;26562:6;26558:138;;;26585:25;26591:10;26603:6;-1:-1:-1;;;;;26585:25:0;:5;:25::i;:::-;26558:138;;;26643:41;-1:-1:-1;;;;;26643:8:0;:21;26665:10;-1:-1:-1;;;;;26643:41:0;;:21;:41::i;:::-;25189:1514;;;;25066:1637;;;:::o;16515:191::-;16608:6;;;-1:-1:-1;;;;;16625:17:0;;;-1:-1:-1;;;;;;16625:17:0;;;;;;;16658:40;;16608:6;;;16625:17;16608:6;;16658:40;;16589:16;;16658:40;16578:128;16515:191;:::o;12251:1072::-;12332:12;12457:16;12537:10;12527:244;;12646:14;12643:1;12640;12625:36;12741:14;12738:1;12731:25;12527:244;12794:14;12827:2;12822:248;;;;13084:99;;;;13289:1;13278:12;;12787:518;;12822:248;12924:14;12921:1;12918;12903:36;13051:1;13045:8;13038:16;13031:24;13020:35;;12822:248;;13084:99;13167:1;13156:12;;12787:518;;;12251:1072;;;:::o;27504:178::-;27562:7;-1:-1:-1;;;;;27586:25:0;;27582:58;;;27620:20;;-1:-1:-1;;;27620:20:0;;;;;3213:25:1;;;3186:18;;27620:20:0;3067:177:1;27582:58:0;-1:-1:-1;27668:5:0;27504:178::o;27856:174::-;27913:6;27944:16;27936:24;;27932:57;;;27969:20;;-1:-1:-1;;;27969:20:0;;;;;3213:25:1;;;3186:18;;27969:20:0;3067:177:1;9916:1065:0;10033:15;10167:4;10161:11;-1:-1:-1;;;10268:17:0;10261:93;-1:-1:-1;;;;;10443:2:0;10439:51;10435:1;10416:17;10412:25;10405:86;10578:6;10573:2;10554:17;10550:26;10543:42;10876:1;10873;10869:2;10850:17;10847:1;10840:5;10833;10828:50;10814:64;;;10909:44;10942:10;10909:32;:44::i;:::-;10901:72;;;;-1:-1:-1;;;10901:72:0;;8160:2:1;10901:72:0;;;8142:21:1;8199:2;8179:18;;;8172:30;-1:-1:-1;;;8218:18:1;;;8211:45;8273:18;;10901:72:0;7958:339:1;10901:72:0;10022:959;9916:1065;;;:::o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;343:29;362:9;343:29;:::i;:::-;333:39;192:186;-1:-1:-1;;;192:186:1:o;383:1057::-;669:4;717:3;706:9;702:19;748:6;737:9;730:25;774:2;812:6;807:2;796:9;792:18;785:34;838:2;876:6;871:2;860:9;856:18;849:34;919:3;914:2;903:9;899:18;892:31;943:6;978;972:13;1009:6;1001;994:22;1047:3;1036:9;1032:19;1025:26;;1086:2;1078:6;1074:15;1060:29;;1107:1;1117:297;1131:6;1128:1;1125:13;1117:297;;;1190:13;;1232:9;;-1:-1:-1;;;;;1228:35:1;1216:48;;1308:11;;1302:18;1322:10;1298:35;1284:12;;;1277:57;1389:15;;;;1354:12;;;;1260:1;1146:9;1117:297;;;-1:-1:-1;1431:3:1;;383:1057;-1:-1:-1;;;;;;;;;;383:1057:1:o;1445:597::-;1557:4;1586:2;1615;1604:9;1597:21;1647:6;1641:13;1690:6;1685:2;1674:9;1670:18;1663:34;1715:1;1725:140;1739:6;1736:1;1733:13;1725:140;;;1834:14;;;1830:23;;1824:30;1800:17;;;1819:2;1796:26;1789:66;1754:10;;1725:140;;;1883:6;1880:1;1877:13;1874:91;;;1953:1;1948:2;1939:6;1928:9;1924:22;1920:31;1913:42;1874:91;-1:-1:-1;2026:2:1;2005:15;-1:-1:-1;;2001:29:1;1986:45;;;;2033:2;1982:54;;1445:597;-1:-1:-1;;;1445:597:1:o;2341:254::-;2409:6;2417;2470:2;2458:9;2449:7;2445:23;2441:32;2438:52;;;2486:1;2483;2476:12;2438:52;2509:29;2528:9;2509:29;:::i;:::-;2499:39;2585:2;2570:18;;;;2557:32;;-1:-1:-1;;;2341:254:1:o;2600:273::-;2656:6;2709:2;2697:9;2688:7;2684:23;2680:32;2677:52;;;2725:1;2722;2715:12;2677:52;2764:9;2751:23;2817:5;2810:13;2803:21;2796:5;2793:32;2783:60;;2839:1;2836;2829:12;4067:127;4128:10;4123:3;4119:20;4116:1;4109:31;4159:4;4156:1;4149:15;4183:4;4180:1;4173:15;4199:127;4260:10;4255:3;4251:20;4248:1;4241:31;4291:4;4288:1;4281:15;4315:4;4312:1;4305:15;4331:125;4371:4;4399:1;4396;4393:8;4390:34;;;4404:18;;:::i;:::-;-1:-1:-1;4441:9:1;;4331:125::o;4461:127::-;4522:10;4517:3;4513:20;4510:1;4503:31;4553:4;4550:1;4543:15;4577:4;4574:1;4567:15;4593:128;4633:3;4664:1;4660:6;4657:1;4654:13;4651:39;;;4670:18;;:::i;:::-;-1:-1:-1;4706:9:1;;4593:128::o;4726:135::-;4765:3;-1:-1:-1;;4786:17:1;;4783:43;;;4806:18;;:::i;:::-;-1:-1:-1;4853:1:1;4842:13;;4726:135::o;4866:334::-;5068:2;5050:21;;;5107:2;5087:18;;;5080:30;-1:-1:-1;;;5141:2:1;5126:18;;5119:40;5191:2;5176:18;;4866:334::o;5205:262::-;5244:7;5276:10;5313:2;5310:1;5306:10;5343:2;5340:1;5336:10;5399:3;5395:2;5391:12;5386:3;5383:21;5376:3;5369:11;5362:19;5358:47;5355:73;;;5408:18;;:::i;:::-;5448:13;;5205:262;-1:-1:-1;;;;5205:262:1:o;5472:356::-;5674:2;5656:21;;;5693:18;;;5686:30;5752:34;5747:2;5732:18;;5725:62;5819:2;5804:18;;5472:356::o;5833:217::-;5873:1;5899;5889:132;;5943:10;5938:3;5934:20;5931:1;5924:31;5978:4;5975:1;5968:15;6006:4;6003:1;5996:15;5889:132;-1:-1:-1;6035:9:1;;5833:217::o;6055:168::-;6095:7;6161:1;6157;6153:6;6149:14;6146:1;6143:21;6138:1;6131:9;6124:17;6120:45;6117:71;;;6168:18;;:::i;:::-;-1:-1:-1;6208:9:1;;6055:168::o;6984:238::-;7024:3;-1:-1:-1;;;;;7091:10:1;;;7121;;;7151:12;;;7143:21;;7140:47;;;7167:18;;:::i;:::-;7203:13;;6984:238;-1:-1:-1;;;;6984:238:1:o;7227:201::-;7265:3;7293:10;7338:2;7331:5;7327:14;7365:2;7356:7;7353:15;7350:41;;;7371:18;;:::i;:::-;7420:1;7407:15;;7227:201;-1:-1:-1;;;7227:201:1:o;7433:231::-;7473:4;-1:-1:-1;;;;;7571:10:1;;;;7541;;7593:12;;;7590:38;;;7608:18;;:::i;:::-;7645:13;;7433:231;-1:-1:-1;;;7433:231:1:o
Swarm Source
ipfs://5e049c757d9d5de1a8a2e92ab1fc10c819eb024f7be8bbdf4ad77c30e7e8b6b4
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $155.63 | 11,101.5203 | $1,727,729.6 |
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.