15M+ users trust MoonPay. Checkout with your preferred payment method.
Ready to onboard to Ethereum? With MetaMask Portfolio, you're in control.
Collect points for eligible actions and use multipliers to win big.
Discover tokens across Ethereum and multiple L2 networks seamlessly and manage your Web3 everything, all in one place.
Buy, sell, and exchange 200+ cryptocurrencies effortlessly. Get your free crypto debit card and pay with crypto anywhere.
Everyday giveaways up to 100 ETH, Lucky Spins. Deposit BONUS 300% and Cashbacks!
Play all your favorite Slots & Live Games, including Plinko, Aviator and Crash! Truly anonymous casino.
5000+ Slots & Live Casino Games, 50+cryptos. Register with Etherscan and get 760% deposit bonus. Win Big$, withdraw it fast.
5000+ Slots & Live Casino Games, 50+cryptos. Register with Etherscan and get 760% deposit bonus. Win Big$, withdraw it fast.
Play 100s of games anonymously with all major cryptos. Join CryptoWins & start winning!
Anonymous play on awesome games - sign up now for 25 free jackpot spins - worth $100s!
Overview
ETH Balance
Eth Value
$23,272,607.84 (@ $2,950.73/ETH)Token Holdings
Could not find any matches!
- ERC-20 Tokens (>100)41,120.61094919 ADXAdEx (ADX)$7,895.24@0.1920.2374928 ALCXAlchemix (ALCX)$5.79@24.406,355,226.10351817 AMPAmp (AMP)$45,003.77@0.007121,417.141 AUCAuctus (AUC)$14.86@0.0007517,608.0674 NIOXAutonio (NIOX)$755.29@0.00150.52 BADGERBadger (BADGER)$2.15@4.1368346.72258142 BANDBandToken (BAND)$513.15@1.482,447.01899571 BELBella (BEL)$2,047.89@0.83691 BENDBend Token (BEND)$0.00@0.001313,157.77064 BITBitDAO (BIT)$12,766.37@0.9703455,143.40730355 BCDTBlockchain C... (BCDT)$16,362.86@0.0360.00000004 BTC2x-FLIBTC 2x Flexi... (BTC2x-...)$0.00@28.6812,350.71429512 BTUBTU Protocol (BTU)$3,940.41@0.31917,881.25903727 BZRXbZx Protocol... (BZRX)$310.55@0.01747,053.6735 CELCelsius (CEL)$4,470.12@0.63373,352.39313092 CRVCurve DAO To... (CRV)$1,401.80@0.41822,848,168.42630344 DEPDEAPCOIN (DEP)$4,999.22@0.00181,296,308.5264296 DPRDeeper Netwo... (DPR)$8,478.99@0.0065428.4037 FINDeFiner (FIN)$0.31@0.00072,985.82234146 DPIDefiPulse In... (DPI)$276,904.37@92.739750.34 DXDDXdao (DXD)$1,482,255,780,488,8...@29,444,890,355,361,300.0041,701.35899646 ENJEnjinCoin (ENJ)$12,598.40@0.3021181.56274426 ETH2x-FLIETH 2x Flexi... (ETH2x-...)$3,841.75@21.159421.90580262 FARMFARM Reward ... (FARM)$1,458.35@66.573560,172.32207385 FUSEFuse Token (FUSE)$3,059.16@0.05083,153.175 GRIDGRID (GRID)$656.46@0.2082230,442.30286889 HEXHEX (HEX)$433.21@0.00190.01375552 HBTCHuobi BTC (HBTC)$305.21@22,188.0079,472.57556513 ENTRPHut34 Entrop... (ENTRP)545.50987098 IDLEIdle (IDLE)$142.84@0.26181,012,888.6014767 IMXImmutable X (IMX)$2,552,479.28@2.522,663.16051005 INDEXIndex (INDEX)$11,558.12@4.3428,239.63118005 JRTJarvis Rewar... (JRT)$175.63@0.006215,325.16302069 KEEPKEEP Token (KEEP)$2,663.80@0.17385.83883781 KP3RKeep3rV1 (KP3R)$429.33@73.53245,844,324.319056 LRCLoopringCoin... (LRC)$62,035,373.42@0.252318,975.88163321 LQTYLQTY (LQTY)$18,884.36@0.9952142,276.44707124 MASKMask Network (MASK)$475,203.33@3.342,156.47472261 MCBMCDEX Token (MCB)$18,179.08@8.432.3 MTAMeta (MTA)$0.07@0.03091,000 MTVMultiVAC (MTV)$1.22@0.001215.84633443 NMRNumeraire (NMR)$423.57@26.731,622.83027328 OMGOMG Network (OMG)$1,052.32@0.6484124,874.5083 ONGonG (ONG)965.4442402 OGNOriginToken (OGN)$130.49@0.135269,465.9826252 OVROVR (OVR)$23,925.61@0.344447,354,955,561.0954 PEPEPepe (PEPE)$487,756.04@0.008,506.9610369 DOUGHPieDAO DOUGH... (DOUGH)$145.39@0.0171114,819.30544154 PNKPinakion (PNK)$2,988.98@0.02618,958.10272315 PNTpNetwork Tok... (PNT)$209.65@0.011112,642.795693 RAIRai Reflex I... (RAI)$35,526.26@2.811,929.76208189 RGTRari Governa... (RGT)$755.83@0.39170.24294057 renBTCrenBTC (renBTC)$15,940.06@65,613.002,753.07389997 renDOGErenDOGE (renDOG...)$20.14@0.007339,023.32463462 RENRepublic (REN)$2,246.15@0.05761,849,949.88882455 RFOXRFOX (RFOX)$7,335.17@0.004515,654.0328071 GRGRigo Token (GRG)$1,299,448.16@2.52421.93046347 rETHRocket Pool ... (rETH)$1,377,349.80@3,264.40175,506.87667514 SANDSAND (SAND)$76,353.21@0.4356,158.0810004 SMARTCREDITSMARTCREDIT ... (SMARTC...)$2,866.97@0.46569.64 STAKESTAKE (STAKE)$1.34@0.1390.788669 sUSDSynth sUSD (sUSD)$0.75@0.95653.31399616 SNXSynthetix Ne... (SNX)$137.55@2.58313,388.78 TELTelcoin (TEL)$1,255.99@0.004285.7413035 UBTUniBright (UBT)$17.81@0.062318,514.4504754 VSPVesperToken (VSP)$8,203.36@0.443112,496.15487117 WOOWOO (WOO)$3,554.94@0.28450.64373171 YFIyearn.financ... (YFI)$4,359.62@6,772.410.06907809 YFIIYFII.finance (YFII)$32.28@467.35035,068.33801903 1INCH1INCH Token (1INCH)$1,917.13@0.378396.04348584 AAVEAave Token (AAVE)$8,230.70@85.697768.75572664 BALBalancer (BAL)$237.89@3.461,988.48759732 BNTBancor (BNT)$1,413.09@0.71064,332.4819591 BATBAT (BAT)$1,031.23@0.238991.81 BUSDBUSD (BUSD)$995.78@1.0049,476.00044048 LINKChainLink To... (LINK)$150,857.93@15.9212.60076985 COMPCompound (COMP)$695.69@55.212,458.024 cDAICompound Dai (cDAI)$57.27@0.023318.34444264 cETHCompound Eth... (cETH)$1,087.09@59.261,277.231 cUSDCCompound USD... (cUSDC)$30.48@0.0239128,256.19844145 DAIDai Stableco... (DAI)$128,162.31@0.9993222,456.34843063 MANADecentraland (MANA)$95,520.98@0.42946,297.90121336 ENSEthereum Nam... (ENS)$88,863.39@14.1114.58085 GNOGnosis (GNO)$3,896.00@267.2069,696.45454998 GRTGraph Token (GRT)$21,091.19@0.3026158.91785 KNCKyberNetwork (KNC)$94.19@0.592716,976.605441 LDOLido DAO Tok... (LDO)$28,690.46@1.693.62529435 MKRMaker (MKR)$9,722.53@2,681.868 USDPPax Dollar (USDP)$8.00@0.999948,430.23732219 SNTStatusNetwor... (SNT)$1,755.67@0.03632,945.04891492 SUSHISushiToken (SUSHI)$3,227.77@1.096841,904.99027 USDTTether USD (USDT)$841,393.11@0.999420.2 TUSDTrueUSD (TUSD)$20.22@1.00111.5883 UMAUMA Voting T... (UMA)$41.49@3.5811,183.3259007 UNIUniswap (UNI)$81,638.28@7.305,040,693.098254 USDCUSDC (USDC)$5,038,313.89@0.999531.30630151 WBTCWrapped BTC (WBTC)$2,054,225.59@65,617.004.366162 WETHWrapped Ethe... (WETH)$12,883.35@2,950.7272842.98147788 wstETHWrapped liqu... (wstETH)$2,897,268.33@3,436.9313,067.5360986 ZRXZRX (ZRX)$6,443.29@0.4931NFT Tokens (86)Airdrop$50 000 FOR FREEERC-1155pepenewyear.com'PEPE Mysterybox NFTERC-1155ETH-BONUS.NET+ $50 000 FOR FREE (ETH-AirdropsEvent.com)ERC-1155Airdropaavenetwork.orgERC-1155Airdropaaveprotocol.netERC-1155nft-dai.comDAI Mysterybox NFTERC-1155nft-ens.comENS Mysterybox NFTERC-1155claim rewards on enscoin.netenscoin.netERC-1155Airdropenstoken.netERC-1155EventERC-1155EventERC-1155claim rewards on eventmana.neteventmana.netERC-1155claim rewards on getaave.netgetaave.netERC-1155gnosis.giftGnosis Mysterybox NFTERC-1155claim rewards on graphcoin.netgraphcoin.netERC-1155claim rewards on hexevent.orghexevent.orgERC-1155Airdrophexprotocol.orgERC-1155Airdrophexprotocol.orgERC-1155nft-immutable.comIMX Mysterybox NFTERC-1155AirdropIMXtoken.netERC-1155nft-lido.comLDO Mysterybox NFTERC-1155LidowstETH.comLidowstETH.comERC-1155liquity.giftLiquity Mysterybox NFTERC-1155claim rewards on loopringtoken.netloopringtoken.netERC-1155claim rewards on makerevent.netmakerevent.netERC-1155Nft Mint Club ItemNft Mint Club ItemERC-1155nft-hex.comnft-hex.comERC-1155Official Authorize credentialPEPE: Airdrop NFT VoucherERC-1155Reward Club [QEfkfA1G]Reward Club [w7cIVAag]ERC-1155Official Authorize credentialRocket Pool: Airdrop NFT VoucherERC-1155token-sandbox.comSAND Mysterybox NFTERC-1155NWBTCwbtc-nft.org or OS/collection/nwbtc to Redeem and Swap your NFT for WBTCERC-1155Official Authorize credentialWBTC: Airdrop NFT VoucherERC-1155nft-woo.comWOO Mysterybox NFTERC-1155Airdropwooprotocol.comERC-1155Airdropwooprotocol.comERC-1155ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]
More Info
Private Name Tags
ContractCreator
Multichain Info
1 address found via- Transactions
- Internal Transactions
- Token Transfers (ERC-20)
- NFT Transfers
- Contract
- Events
- Analytics
- Multichain Portfolio
- Info
Advanced Filter- Filter by Tx Type:
- Tx
- Internal Tx
- ERC-20
- NFTs
Latest 25 from a total of 36 transactions
Transaction Hash MethodBlockFromToValue Deposit 19873549 2024-05-15 6:20:47 45 hrs ago 1715754047 IN 0.00001 ETH 0.00009111 3.6445613 Transfer 18231680 2023-09-28 3:51:35 232 days ago 1695873095 IN 0.008 ETH 0.00019979 8.0556335 Transfer 14442754 2022-03-23 13:11:18 785 days ago 1648041078 IN 0.00721179 ETH 0.00046415 22.05433273 Transfer 14442667 2022-03-23 12:54:37 785 days ago 1648040077 IN 0.00735879 ETH 0.00046852 22.26180859 Transfer 14173806 2022-02-09 19:39:28 827 days ago 1644435568 IN 0.0211 ETH 0.00508563 241.64358437 Transfer 14173675 2022-02-09 19:10:08 827 days ago 1644433808 IN 0.02083504 ETH 0.00181783 86.37452627 Transfer 14156823 2022-02-07 4:26:24 829 days ago 1644207984 IN 0.01167921 ETH 0.00173305 82.34590307 0x68747470 13925235 2022-01-02 9:37:30 865 days ago 1641116250 IN 0 ETH 0.00165753 73 0x68747470 13925235 2022-01-02 9:37:30 865 days ago 1641116250 IN 0 ETH 0.00165753 73 0x68747470 13925235 2022-01-02 9:37:30 865 days ago 1641116250 IN 0 ETH 0.00165753 73 0x68747470 13925235 2022-01-02 9:37:30 865 days ago 1641116250 IN 0 ETH 0.00165753 73 0x68747470 13925235 2022-01-02 9:37:30 865 days ago 1641116250 IN 0 ETH 0.00165753 73 0x68747470 13925235 2022-01-02 9:37:30 865 days ago 1641116250 IN 0 ETH 0.00165753 73 0x68747470 13925235 2022-01-02 9:37:30 865 days ago 1641116250 IN 0 ETH 0.00165753 73 0x68747470 13925235 2022-01-02 9:37:30 865 days ago 1641116250 IN 0 ETH 0.00165753 73 0x68747470 13925235 2022-01-02 9:37:30 865 days ago 1641116250 IN 0 ETH 0.00165753 73 0x68747470 13925235 2022-01-02 9:37:30 865 days ago 1641116250 IN 0 ETH 0.00165753 73 0x68747470 13925232 2022-01-02 9:37:01 865 days ago 1641116221 IN 0 ETH 0.00165753 73 0x68747470 13925232 2022-01-02 9:37:01 865 days ago 1641116221 IN 0 ETH 0.00165753 73 0x68747470 13925232 2022-01-02 9:37:01 865 days ago 1641116221 IN 0 ETH 0.00165753 73 0x68747470 13925232 2022-01-02 9:37:01 865 days ago 1641116221 IN 0 ETH 0.00165753 73 0x68747470 13925232 2022-01-02 9:37:01 865 days ago 1641116221 IN 0 ETH 0.00165753 73 0x68747470 13925232 2022-01-02 9:37:01 865 days ago 1641116221 IN 0 ETH 0.00165753 73 0x68747470 13925232 2022-01-02 9:37:01 865 days ago 1641116221 IN 0 ETH 0.00165753 73 0x68747470 13925229 2022-01-02 9:36:35 865 days ago 1641116195 IN 0 ETH 0.00165753 73 Latest 25 internal transactions (View All)
Advanced mode:Parent Transaction Hash Block From To Value 19887132 2024-05-17 3:51:59 10 mins ago 1715917919 0.007 ETH 19886968 2024-05-17 3:18:59 43 mins ago 1715915939 0.13 ETH 19886687 2024-05-17 2:22:47 1 hr ago 1715912567 0.02144453 ETH 19886210 2024-05-17 0:46:59 3 hrs ago 1715906819 0.0017 ETH 19886178 2024-05-17 0:40:35 3 hrs ago 1715906435 0.0565658 ETH 19886178 2024-05-17 0:40:35 3 hrs ago 1715906435 0.25165433 ETH 19886159 2024-05-17 0:36:35 3 hrs ago 1715906195 0.17815234 ETH 19886143 2024-05-17 0:33:23 3 hrs ago 1715906003 0.001 ETH 19886093 2024-05-17 0:23:23 3 hrs ago 1715905403 0.0248189 ETH 19886093 2024-05-17 0:23:23 3 hrs ago 1715905403 0.0203718 ETH 19885931 2024-05-16 23:50:59 4 hrs ago 1715903459 0.017 ETH 19885931 2024-05-16 23:50:59 4 hrs ago 1715903459 0.45295203 ETH 19885835 2024-05-16 23:31:47 4 hrs ago 1715902307 0.07 ETH 19885500 2024-05-16 22:24:23 5 hrs ago 1715898263 0.0000405 ETH 19885256 2024-05-16 21:35:35 6 hrs ago 1715895335 0.02 ETH 19885108 2024-05-16 21:05:47 6 hrs ago 1715893547 0.00820351 ETH 19885103 2024-05-16 21:04:47 6 hrs ago 1715893487 0.00962281 ETH 19884726 2024-05-16 19:48:59 8 hrs ago 1715888939 0.00421 ETH 19884703 2024-05-16 19:44:11 8 hrs ago 1715888651 0.004 ETH 19884697 2024-05-16 19:42:59 8 hrs ago 1715888579 0.02520201 ETH 19884645 2024-05-16 19:32:35 8 hrs ago 1715887955 0.51584287 ETH 19884558 2024-05-16 19:15:11 8 hrs ago 1715886911 0.01497125 ETH 19884558 2024-05-16 19:15:11 8 hrs ago 1715886911 0.1161228 ETH 19884558 2024-05-16 19:15:11 8 hrs ago 1715886911 0.0027202 ETH 19884425 2024-05-16 18:48:35 9 hrs ago 1715885315 0.00305752 ETH Loading...LoadingContract Name:DefaultDepositContract
Compiler Versionv0.7.0+commit.9e61f92b
Contract Source Code (Solidity)
- contract Ownable
- - function transferOwnership(
- - function renounceOwnership()
- library MathUint
- - function mul(
- - function sub(
- - function add(
- - function add64(
- - function totalSupply()
- - function balanceOf(
- - function allowance(
- - function transfer(
- - function transferFrom(
- - function approve(
- library AddressUtil
- - function isContract(
- - function toPayable(
- - function sendETH(
- - function sendETHAndVerify(
- - function fastCall(
- - function fastCallAndVerify(
- contract Claimable is Ownable
- - function transferOwnership(
- - function claimOwnership()
- library ERC20SafeTransfer
- - function safeTransferAndVerify(
- - function safeTransfer(
- - function safeTransferWithGasLimitAndV ...
- - function safeTransferWithGasLimit(
- - function safeTransferFromAndVerify(
- - function safeTransferFrom(
- - function safeTransferFromWithGasLimit ...
- - function safeTransferFromWithGasLimit ...
- - function checkReturnValue(
- library SafeCast
- - function toUint128(uint256 value)
- - function toUint96(uint256 value)
- - function toUint64(uint256 value)
- - function toUint32(uint256 value)
- - function toUint40(uint256 value)
- - function toUint16(uint256 value)
- - function toUint8(uint256 value)
- - function toUint256(int256 value)
- - function toInt128(int256 value)
- - function toInt64(int256 value)
- - function toInt32(int256 value)
- - function toInt16(int256 value)
- - function toInt8(int256 value)
- - function toInt256(uint256 value)
- interface IDepositContract
- - function isTokenSupported(address tok ...
- - function deposit(
- - function withdraw(
- - function transfer(
- - function isETH(address addr)
- contract DefaultDepositContract is ... *
- - function initialize(
- - function setCheckBalance(
- - function isTokenSupported(address /*t ...
- - function deposit(
- - function withdraw(
- - function transfer(
- - function isETH(address addr)
- - function isETHInternal(address addr)
/** *Submitted for verification at Etherscan.io on 2020-10-29 */ // SPDX-License-Identifier: Apache-2.0 // Copyright 2017 Loopring Technology Limited. pragma solidity ^0.7.0; /// @title Ownable /// @author Brecht Devos - <[email protected]> /// @dev The Ownable contract has an owner address, and provides basic /// authorization control functions, this simplifies the implementation of /// "user permissions". contract Ownable { address public owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /// @dev The Ownable constructor sets the original `owner` of the contract /// to the sender. constructor() { owner = msg.sender; } /// @dev Throws if called by any account other than the owner. modifier onlyOwner() { require(msg.sender == owner, "UNAUTHORIZED"); _; } /// @dev Allows the current owner to transfer control of the contract to a /// new owner. /// @param newOwner The address to transfer ownership to. function transferOwnership( address newOwner ) public virtual onlyOwner { require(newOwner != address(0), "ZERO_ADDRESS"); emit OwnershipTransferred(owner, newOwner); owner = newOwner; } function renounceOwnership() public onlyOwner { emit OwnershipTransferred(owner, address(0)); owner = address(0); } } // Copyright 2017 Loopring Technology Limited. /// @title Utility Functions for uint /// @author Daniel Wang - <[email protected]> library MathUint { using MathUint for uint; function mul( uint a, uint b ) internal pure returns (uint c) { c = a * b; require(a == 0 || c / a == b, "MUL_OVERFLOW"); } function sub( uint a, uint b ) internal pure returns (uint) { require(b <= a, "SUB_UNDERFLOW"); return a - b; } function add( uint a, uint b ) internal pure returns (uint c) { c = a + b; require(c >= a, "ADD_OVERFLOW"); } function add64( uint64 a, uint64 b ) internal pure returns (uint64 c) { c = a + b; require(c >= a, "ADD_OVERFLOW"); } } // Copyright 2017 Loopring Technology Limited. /// @title ERC20 Token Interface /// @dev see https://github.com/ethereum/EIPs/issues/20 /// @author Daniel Wang - <[email protected]> abstract contract ERC20 { function totalSupply() public virtual view returns (uint); function balanceOf( address who ) public virtual view returns (uint); function allowance( address owner, address spender ) public virtual view returns (uint); function transfer( address to, uint value ) public virtual returns (bool); function transferFrom( address from, address to, uint value ) public virtual returns (bool); function approve( address spender, uint value ) public virtual returns (bool); } // Copyright 2017 Loopring Technology Limited. // Copyright 2017 Loopring Technology Limited. /// @title Utility Functions for addresses /// @author Daniel Wang - <[email protected]> /// @author Brecht Devos - <[email protected]> library AddressUtil { using AddressUtil for *; function isContract( address addr ) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(addr) } return (codehash != 0x0 && codehash != 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470); } function toPayable( address addr ) internal pure returns (address payable) { return payable(addr); } // Works like address.send but with a customizable gas limit // Make sure your code is safe for reentrancy when using this function! function sendETH( address to, uint amount, uint gasLimit ) internal returns (bool success) { if (amount == 0) { return true; } address payable recipient = to.toPayable(); /* solium-disable-next-line */ (success, ) = recipient.call{value: amount, gas: gasLimit}(""); } // Works like address.transfer but with a customizable gas limit // Make sure your code is safe for reentrancy when using this function! function sendETHAndVerify( address to, uint amount, uint gasLimit ) internal returns (bool success) { success = to.sendETH(amount, gasLimit); require(success, "TRANSFER_FAILURE"); } // Works like call but is slightly more efficient when data // needs to be copied from memory to do the call. function fastCall( address to, uint gasLimit, uint value, bytes memory data ) internal returns (bool success, bytes memory returnData) { if (to != address(0)) { assembly { // Do the call success := call(gasLimit, to, value, add(data, 32), mload(data), 0, 0) // Copy the return data let size := returndatasize() returnData := mload(0x40) mstore(returnData, size) returndatacopy(add(returnData, 32), 0, size) // Update free memory pointer mstore(0x40, add(returnData, add(32, size))) } } } // Like fastCall, but throws when the call is unsuccessful. function fastCallAndVerify( address to, uint gasLimit, uint value, bytes memory data ) internal returns (bytes memory returnData) { bool success; (success, returnData) = fastCall(to, gasLimit, value, data); if (!success) { assembly { revert(add(returnData, 32), mload(returnData)) } } } } // Copyright 2017 Loopring Technology Limited. /// @title Claimable /// @author Brecht Devos - <[email protected]> /// @dev Extension for the Ownable contract, where the ownership needs /// to be claimed. This allows the new owner to accept the transfer. contract Claimable is Ownable { address public pendingOwner; /// @dev Modifier throws if called by any account other than the pendingOwner. modifier onlyPendingOwner() { require(msg.sender == pendingOwner, "UNAUTHORIZED"); _; } /// @dev Allows the current owner to set the pendingOwner address. /// @param newOwner The address to transfer ownership to. function transferOwnership( address newOwner ) public override onlyOwner { require(newOwner != address(0) && newOwner != owner, "INVALID_ADDRESS"); pendingOwner = newOwner; } /// @dev Allows the pendingOwner address to finalize the transfer. function claimOwnership() public onlyPendingOwner { emit OwnershipTransferred(owner, pendingOwner); owner = pendingOwner; pendingOwner = address(0); } } // Copyright 2017 Loopring Technology Limited. /// @title ERC20 safe transfer /// @dev see https://github.com/sec-bit/badERC20Fix /// @author Brecht Devos - <[email protected]> library ERC20SafeTransfer { function safeTransferAndVerify( address token, address to, uint value ) internal { safeTransferWithGasLimitAndVerify( token, to, value, gasleft() ); } function safeTransfer( address token, address to, uint value ) internal returns (bool) { return safeTransferWithGasLimit( token, to, value, gasleft() ); } function safeTransferWithGasLimitAndVerify( address token, address to, uint value, uint gasLimit ) internal { require( safeTransferWithGasLimit(token, to, value, gasLimit), "TRANSFER_FAILURE" ); } function safeTransferWithGasLimit( address token, address to, uint value, uint gasLimit ) internal returns (bool) { // A transfer is successful when 'call' is successful and depending on the token: // - No value is returned: we assume a revert when the transfer failed (i.e. 'call' returns false) // - A single boolean is returned: this boolean needs to be true (non-zero) // bytes4(keccak256("transfer(address,uint256)")) = 0xa9059cbb bytes memory callData = abi.encodeWithSelector( bytes4(0xa9059cbb), to, value ); (bool success, ) = token.call{gas: gasLimit}(callData); return checkReturnValue(success); } function safeTransferFromAndVerify( address token, address from, address to, uint value ) internal { safeTransferFromWithGasLimitAndVerify( token, from, to, value, gasleft() ); } function safeTransferFrom( address token, address from, address to, uint value ) internal returns (bool) { return safeTransferFromWithGasLimit( token, from, to, value, gasleft() ); } function safeTransferFromWithGasLimitAndVerify( address token, address from, address to, uint value, uint gasLimit ) internal { bool result = safeTransferFromWithGasLimit( token, from, to, value, gasLimit ); require(result, "TRANSFER_FAILURE"); } function safeTransferFromWithGasLimit( address token, address from, address to, uint value, uint gasLimit ) internal returns (bool) { // A transferFrom is successful when 'call' is successful and depending on the token: // - No value is returned: we assume a revert when the transfer failed (i.e. 'call' returns false) // - A single boolean is returned: this boolean needs to be true (non-zero) // bytes4(keccak256("transferFrom(address,address,uint256)")) = 0x23b872dd bytes memory callData = abi.encodeWithSelector( bytes4(0x23b872dd), from, to, value ); (bool success, ) = token.call{gas: gasLimit}(callData); return checkReturnValue(success); } function checkReturnValue( bool success ) internal pure returns (bool) { // A transfer/transferFrom is successful when 'call' is successful and depending on the token: // - No value is returned: we assume a revert when the transfer failed (i.e. 'call' returns false) // - A single boolean is returned: this boolean needs to be true (non-zero) if (success) { assembly { switch returndatasize() // Non-standard ERC20: nothing is returned so if 'call' was successful we assume the transfer succeeded case 0 { success := 1 } // Standard ERC20: a single boolean value is returned which needs to be true case 32 { returndatacopy(0, 0, 32) success := mload(0) } // None of the above: not successful default { success := 0 } } } return success; } } // Taken from https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/SafeCast.sol /** * @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow * checks. * * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can * easily result in undesired exploitation or bugs, since developers usually * assume that overflows raise errors. `SafeCast` restores this intuition by * reverting the transaction when such an operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. * * Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing * all math on `uint256` and `int256` and then downcasting. */ library SafeCast { /** * @dev Returns the downcasted uint128 from uint256, reverting on * overflow (when the input is greater than largest uint128). * * Counterpart to Solidity's `uint128` operator. * * Requirements: * * - input must fit into 128 bits */ function toUint128(uint256 value) internal pure returns (uint128) { require(value < 2**128, "SafeCast: value doesn\'t fit in 128 bits"); return uint128(value); } /** * @dev Returns the downcasted uint96 from uint256, reverting on * overflow (when the input is greater than largest uint96). * * Counterpart to Solidity's `uint96` operator. * * Requirements: * * - input must fit into 96 bits */ function toUint96(uint256 value) internal pure returns (uint96) { require(value < 2**96, "SafeCast: value doesn\'t fit in 96 bits"); return uint96(value); } /** * @dev Returns the downcasted uint64 from uint256, reverting on * overflow (when the input is greater than largest uint64). * * Counterpart to Solidity's `uint64` operator. * * Requirements: * * - input must fit into 64 bits */ function toUint64(uint256 value) internal pure returns (uint64) { require(value < 2**64, "SafeCast: value doesn\'t fit in 64 bits"); return uint64(value); } /** * @dev Returns the downcasted uint32 from uint256, reverting on * overflow (when the input is greater than largest uint32). * * Counterpart to Solidity's `uint32` operator. * * Requirements: * * - input must fit into 32 bits */ function toUint32(uint256 value) internal pure returns (uint32) { require(value < 2**32, "SafeCast: value doesn\'t fit in 32 bits"); return uint32(value); } /** * @dev Returns the downcasted uint40 from uint256, reverting on * overflow (when the input is greater than largest uint40). * * Counterpart to Solidity's `uint32` operator. * * Requirements: * * - input must fit into 40 bits */ function toUint40(uint256 value) internal pure returns (uint40) { require(value < 2**40, "SafeCast: value doesn\'t fit in 40 bits"); return uint40(value); } /** * @dev Returns the downcasted uint16 from uint256, reverting on * overflow (when the input is greater than largest uint16). * * Counterpart to Solidity's `uint16` operator. * * Requirements: * * - input must fit into 16 bits */ function toUint16(uint256 value) internal pure returns (uint16) { require(value < 2**16, "SafeCast: value doesn\'t fit in 16 bits"); return uint16(value); } /** * @dev Returns the downcasted uint8 from uint256, reverting on * overflow (when the input is greater than largest uint8). * * Counterpart to Solidity's `uint8` operator. * * Requirements: * * - input must fit into 8 bits. */ function toUint8(uint256 value) internal pure returns (uint8) { require(value < 2**8, "SafeCast: value doesn\'t fit in 8 bits"); return uint8(value); } /** * @dev Converts a signed int256 into an unsigned uint256. * * Requirements: * * - input must be greater than or equal to 0. */ function toUint256(int256 value) internal pure returns (uint256) { require(value >= 0, "SafeCast: value must be positive"); return uint256(value); } /** * @dev Returns the downcasted int128 from int256, reverting on * overflow (when the input is less than smallest int128 or * greater than largest int128). * * Counterpart to Solidity's `int128` operator. * * Requirements: * * - input must fit into 128 bits * * _Available since v3.1._ */ function toInt128(int256 value) internal pure returns (int128) { require(value >= -2**127 && value < 2**127, "SafeCast: value doesn\'t fit in 128 bits"); return int128(value); } /** * @dev Returns the downcasted int64 from int256, reverting on * overflow (when the input is less than smallest int64 or * greater than largest int64). * * Counterpart to Solidity's `int64` operator. * * Requirements: * * - input must fit into 64 bits * * _Available since v3.1._ */ function toInt64(int256 value) internal pure returns (int64) { require(value >= -2**63 && value < 2**63, "SafeCast: value doesn\'t fit in 64 bits"); return int64(value); } /** * @dev Returns the downcasted int32 from int256, reverting on * overflow (when the input is less than smallest int32 or * greater than largest int32). * * Counterpart to Solidity's `int32` operator. * * Requirements: * * - input must fit into 32 bits * * _Available since v3.1._ */ function toInt32(int256 value) internal pure returns (int32) { require(value >= -2**31 && value < 2**31, "SafeCast: value doesn\'t fit in 32 bits"); return int32(value); } /** * @dev Returns the downcasted int16 from int256, reverting on * overflow (when the input is less than smallest int16 or * greater than largest int16). * * Counterpart to Solidity's `int16` operator. * * Requirements: * * - input must fit into 16 bits * * _Available since v3.1._ */ function toInt16(int256 value) internal pure returns (int16) { require(value >= -2**15 && value < 2**15, "SafeCast: value doesn\'t fit in 16 bits"); return int16(value); } /** * @dev Returns the downcasted int8 from int256, reverting on * overflow (when the input is less than smallest int8 or * greater than largest int8). * * Counterpart to Solidity's `int8` operator. * * Requirements: * * - input must fit into 8 bits. * * _Available since v3.1._ */ function toInt8(int256 value) internal pure returns (int8) { require(value >= -2**7 && value < 2**7, "SafeCast: value doesn\'t fit in 8 bits"); return int8(value); } /** * @dev Converts an unsigned uint256 into a signed int256. * * Requirements: * * - input must be less than or equal to maxInt256. */ function toInt256(uint256 value) internal pure returns (int256) { require(value < 2**255, "SafeCast: value doesn't fit in an int256"); return int256(value); } } // Copyright 2017 Loopring Technology Limited. /// @title IDepositContract. /// @dev Contract storing and transferring funds for an exchange. /// /// ERC1155 tokens can be supported by registering pseudo token addresses calculated /// as `address(keccak256(real_token_address, token_params))`. Then the custom /// deposit contract can look up the real token address and paramsters with the /// pseudo token address before doing the transfers. /// @author Brecht Devos - <[email protected]> interface IDepositContract { /// @dev Returns if a token is suppoprted by this contract. function isTokenSupported(address token) external view returns (bool); /// @dev Transfers tokens from a user to the exchange. This function will /// be called when a user deposits funds to the exchange. /// In a simple implementation the funds are simply stored inside the /// deposit contract directly. More advanced implementations may store the funds /// in some DeFi application to earn interest, so this function could directly /// call the necessary functions to store the funds there. /// /// This function needs to throw when an error occurred! /// /// This function can only be called by the exchange. /// /// @param from The address of the account that sends the tokens. /// @param token The address of the token to transfer (`0x0` for ETH). /// @param amount The amount of tokens to transfer. /// @param extraData Opaque data that can be used by the contract to handle the deposit /// @return amountReceived The amount to deposit to the user's account in the Merkle tree function deposit( address from, address token, uint96 amount, bytes calldata extraData ) external payable returns (uint96 amountReceived); /// @dev Transfers tokens from the exchange to a user. This function will /// be called when a withdrawal is done for a user on the exchange. /// In the simplest implementation the funds are simply stored inside the /// deposit contract directly so this simply transfers the requested tokens back /// to the user. More advanced implementations may store the funds /// in some DeFi application to earn interest so the function would /// need to get those tokens back from the DeFi application first before they /// can be transferred to the user. /// /// This function needs to throw when an error occurred! /// /// This function can only be called by the exchange. /// /// @param from The address from which 'amount' tokens are transferred. /// @param to The address to which 'amount' tokens are transferred. /// @param token The address of the token to transfer (`0x0` for ETH). /// @param amount The amount of tokens transferred. /// @param extraData Opaque data that can be used by the contract to handle the withdrawal function withdraw( address from, address to, address token, uint amount, bytes calldata extraData ) external payable; /// @dev Transfers tokens (ETH not supported) for a user using the allowance set /// for the exchange. This way the approval can be used for all functionality (and /// extended functionality) of the exchange. /// Should NOT be used to deposit/withdraw user funds, `deposit`/`withdraw` /// should be used for that as they will contain specialised logic for those operations. /// This function can be called by the exchange to transfer onchain funds of users /// necessary for Agent functionality. /// /// This function needs to throw when an error occurred! /// /// This function can only be called by the exchange. /// /// @param from The address of the account that sends the tokens. /// @param to The address to which 'amount' tokens are transferred. /// @param token The address of the token to transfer (ETH is and cannot be suppported). /// @param amount The amount of tokens transferred. function transfer( address from, address to, address token, uint amount ) external payable; /// @dev Checks if the given address is used for depositing ETH or not. /// Is used while depositing to send the correct ETH amount to the deposit contract. /// /// Note that 0x0 is always registered for deposting ETH when the exchange is created! /// This function allows additional addresses to be used for depositing ETH, the deposit /// contract can implement different behaviour based on the address value. /// /// @param addr The address to check /// @return True if the address is used for depositing ETH, else false. function isETH(address addr) external view returns (bool); } /// @title DefaultDepositContract /// @dev Default implementation of IDepositContract that just stores /// all funds without doing anything with them. /// /// Should be able to work with proxy contracts so the contract /// can be updated easily (but with great caution and transparency!) /// when necessary. /// /// @author Brecht Devos - <[email protected]> contract DefaultDepositContract is IDepositContract, Claimable { using AddressUtil for address; using ERC20SafeTransfer for address; using MathUint for uint; using SafeCast for uint; address public exchange; mapping (address => bool) needCheckBalance; modifier onlyExchange() { require(msg.sender == exchange, "UNAUTHORIZED"); _; } modifier ifNotZero(uint amount) { if (amount == 0) return; else _; } event CheckBalance( address indexed token, bool checkBalance ); function initialize( address _exchange ) external { require( exchange == address(0) && _exchange != address(0), "INVALID_EXCHANGE" ); owner = msg.sender; exchange = _exchange; } function setCheckBalance( address token, bool checkBalance ) external onlyOwner { require(needCheckBalance[token] != checkBalance, "INVALID_VALUE"); needCheckBalance[token] = checkBalance; emit CheckBalance(token, checkBalance); } function isTokenSupported(address /*token*/) external override pure returns (bool) { return true; } function deposit( address from, address token, uint96 amount, bytes calldata /*extraData*/ ) external override payable onlyExchange ifNotZero(amount) returns (uint96 amountReceived) { uint ethToReturn = 0; if (isETHInternal(token)) { require(msg.value >= amount, "INVALID_ETH_DEPOSIT"); amountReceived = amount; ethToReturn = msg.value - amount; } else { bool checkBalance = needCheckBalance[token]; uint balanceBefore = checkBalance ? ERC20(token).balanceOf(address(this)) : 0; token.safeTransferFromAndVerify(from, address(this), uint(amount)); uint balanceAfter = checkBalance ? ERC20(token).balanceOf(address(this)) : amount; uint diff = balanceAfter.sub(balanceBefore); amountReceived = diff.toUint96(); ethToReturn = msg.value; } if (ethToReturn > 0) { from.sendETHAndVerify(ethToReturn, gasleft()); } } function withdraw( address /*from*/, address to, address token, uint amount, bytes calldata /*extraData*/ ) external override payable onlyExchange ifNotZero(amount) { if (isETHInternal(token)) { to.sendETHAndVerify(amount, gasleft()); } else { if (!token.safeTransfer(to, amount)){ uint amountPaid = ERC20(token).balanceOf(address(this)); require(amountPaid < amount, "UNEXPECTED"); token.safeTransferAndVerify(to, amountPaid); } } } function transfer( address from, address to, address token, uint amount ) external override payable onlyExchange ifNotZero(amount) { token.safeTransferFromAndVerify(from, to, amount); } function isETH(address addr) external override pure returns (bool) { return isETHInternal(addr); } // -- Internal -- function isETHInternal(address addr) internal pure returns (bool) { return addr == address(0); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"bool","name":"checkBalance","type":"bool"}],"name":"CheckBalance","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"},{"inputs":[],"name":"claimOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint96","name":"amount","type":"uint96"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"deposit","outputs":[{"internalType":"uint96","name":"amountReceived","type":"uint96"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"exchange","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_exchange","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isETH","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTokenSupported","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bool","name":"checkBalance","type":"bool"}],"name":"setCheckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"withdraw","outputs":[],"stateMutability":"payable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50600080546001600160a01b03191633179055611801806100326000396000f3fe6080604052600436106100d25760003560e01c8063c4d66de81161007f578063f18d03cc11610059578063f18d03cc146102ec578063f2fde38b14610335578063f3d790b714610375578063f70a250814610441576100d2565b8063c4d66de814610282578063d2f7265a146102c2578063e30c3978146102d7576100d2565b8063715018a6116100b0578063715018a6146101db57806375151b63146101f05780638da5cb5b14610244576100d2565b80633823f247146100d75780634e71e0c81461017e578063634de7dd14610193575b600080fd5b61017c600480360360a08110156100ed57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101358216926040820135909216916060820135919081019060a08101608082013564010000000081111561013d57600080fd5b82018360208201111561014f57600080fd5b8035906020019184600183028401116401000000008311171561017157600080fd5b509092509050610481565b005b34801561018a57600080fd5b5061017c61069f565b34801561019f57600080fd5b5061017c600480360360408110156101b657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013515156107bb565b3480156101e757600080fd5b5061017c610967565b3480156101fc57600080fd5b506102306004803603602081101561021357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610a5c565b604080519115158252519081900360200190f35b34801561025057600080fd5b50610259610a62565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561028e57600080fd5b5061017c600480360360208110156102a557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610a7e565b3480156102ce57600080fd5b50610259610b79565b3480156102e357600080fd5b50610259610b95565b61017c6004803603608081101561030257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101358216916040820135169060600135610bb1565b34801561034157600080fd5b5061017c6004803603602081101561035857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610c6b565b6104206004803603608081101561038b57600080fd5b73ffffffffffffffffffffffffffffffffffffffff82358116926020810135909116916bffffffffffffffffffffffff60408301351691908101906080810160608201356401000000008111156103e157600080fd5b8201836020820111156103f357600080fd5b8035906020019184600183028401116401000000008311171561041557600080fd5b509092509050610de3565b604080516bffffffffffffffffffffffff9092168252519081900360200190f35b34801561044d57600080fd5b506102306004803603602081101561046457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661113b565b60025473ffffffffffffffffffffffffffffffffffffffff16331461050757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015290519081900360640190fd5b828061051257610696565b61051b8561114c565b1561054957610543845a73ffffffffffffffffffffffffffffffffffffffff89169190611166565b50610696565b61056a73ffffffffffffffffffffffffffffffffffffffff861687866111fe565b6106965760008573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156105d757600080fd5b505afa1580156105eb573d6000803e3d6000fd5b505050506040513d602081101561060157600080fd5b5051905084811061067357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f554e455850454354454400000000000000000000000000000000000000000000604482015290519081900360640190fd5b61069473ffffffffffffffffffffffffffffffffffffffff87168883611214565b505b50505050505050565b60015473ffffffffffffffffffffffffffffffffffffffff16331461072557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015290519081900360640190fd5b6001546000805460405173ffffffffffffffffffffffffffffffffffffffff93841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff841617909155169055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461084157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526003602052604090205460ff16151581151514156108dc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f494e56414c49445f56414c554500000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff821660008181526003602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016851515908117909155825190815291517f5ca546e2df4ecf26ee1e85b99c7fc08237e0fc2bc8df80f9f3e0fa5a7116ed819281900390910190a25050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146109ed57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b50600190565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60025473ffffffffffffffffffffffffffffffffffffffff16158015610ab9575073ffffffffffffffffffffffffffffffffffffffff811615155b610b2457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f494e56414c49445f45584348414e474500000000000000000000000000000000604482015290519081900360640190fd5b60008054337fffffffffffffffffffffffff0000000000000000000000000000000000000000918216179091556002805490911673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60025473ffffffffffffffffffffffffffffffffffffffff163314610c3757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015290519081900360640190fd5b8080610c4257610c64565b610c6473ffffffffffffffffffffffffffffffffffffffff8416868685611225565b5050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610cf157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811615801590610d31575060005473ffffffffffffffffffffffffffffffffffffffff828116911614155b610d9c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f494e56414c49445f414444524553530000000000000000000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60025460009073ffffffffffffffffffffffffffffffffffffffff163314610e6c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015290519081900360640190fd5b6bffffffffffffffffffffffff841680610e8557611131565b6000610e908761114c565b15610f2c57856bffffffffffffffffffffffff16341015610f1257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f4554485f4445504f53495400000000000000000000000000604482015290519081900360640190fd5b508491506bffffffffffffffffffffffff82163403611104565b73ffffffffffffffffffffffffffffffffffffffff871660009081526003602052604081205460ff169081610f62576000610ffb565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8b16916370a08231916024808301926020929190829003018186803b158015610fce57600080fd5b505afa158015610fe2573d6000803e3d6000fd5b505050506040513d6020811015610ff857600080fd5b50515b905061102d73ffffffffffffffffffffffffffffffffffffffff8a168b306bffffffffffffffffffffffff8c16611225565b60008261104857886bffffffffffffffffffffffff166110e1565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8c16916370a08231916024808301926020929190829003018186803b1580156110b457600080fd5b505afa1580156110c8573d6000803e3d6000fd5b505050506040513d60208110156110de57600080fd5b50515b905060006110ef8284611238565b90506110fa816112af565b9650349450505050505b801561112f5761112d815a73ffffffffffffffffffffffffffffffffffffffff8b169190611166565b505b505b5095945050505050565b60006111468261114c565b92915050565b73ffffffffffffffffffffffffffffffffffffffff161590565b600061118973ffffffffffffffffffffffffffffffffffffffff8516848461131a565b9050806111f757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5452414e534645525f4641494c55524500000000000000000000000000000000604482015290519081900360640190fd5b9392505050565b600061120c8484845a6113b7565b949350505050565b6112208383835a61150c565b505050565b611232848484845a611583565b50505050565b6000828211156112a957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5355425f554e444552464c4f5700000000000000000000000000000000000000604482015290519081900360640190fd5b50900390565b60006c010000000000000000000000008210611316576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806117a66026913960400191505060405180910390fd5b5090565b600082611329575060016111f7565b600061134a8573ffffffffffffffffffffffffffffffffffffffff16611608565b60405190915073ffffffffffffffffffffffffffffffffffffffff821690849086906000818181858888f193505050503d80600081146113a6576040519150601f19603f3d011682016040523d82523d6000602084013e6113ab565b606091505b50909695505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8086166024830152604480830186905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251825160009485938a16928792869282918083835b6020831061148c57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161144f565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038160008787f1925050503d80600081146114ef576040519150601f19603f3d011682016040523d82523d6000602084013e6114f4565b606091505b505090506115018161160b565b979650505050505050565b611518848484846113b7565b61123257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5452414e534645525f4641494c55524500000000000000000000000000000000604482015290519081900360640190fd5b60006115928686868686611647565b90508061160057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5452414e534645525f4641494c55524500000000000000000000000000000000604482015290519081900360640190fd5b505050505050565b90565b60008115611316573d801561162b57602081146116345760009250611640565b60019250611640565b60206000803e60005192505b5090919050565b6040805173ffffffffffffffffffffffffffffffffffffffff80871660248301528086166044830152606480830186905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001781529251825160009485938b16928792869282918083835b6020831061172457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016116e7565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038160008787f1925050503d8060008114611787576040519150601f19603f3d011682016040523d82523d6000602084013e61178c565b606091505b505090506117998161160b565b9897505050505050505056fe53616665436173743a2076616c756520646f65736e27742066697420696e2039362062697473a2646970667358221220979e966d3e3b93489b96051bd9dd18007a01182463cd93ae5ca1c1783041e36e64736f6c63430007000033Deployed Bytecode
0x6080604052600436106100d25760003560e01c8063c4d66de81161007f578063f18d03cc11610059578063f18d03cc146102ec578063f2fde38b14610335578063f3d790b714610375578063f70a250814610441576100d2565b8063c4d66de814610282578063d2f7265a146102c2578063e30c3978146102d7576100d2565b8063715018a6116100b0578063715018a6146101db57806375151b63146101f05780638da5cb5b14610244576100d2565b80633823f247146100d75780634e71e0c81461017e578063634de7dd14610193575b600080fd5b61017c600480360360a08110156100ed57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101358216926040820135909216916060820135919081019060a08101608082013564010000000081111561013d57600080fd5b82018360208201111561014f57600080fd5b8035906020019184600183028401116401000000008311171561017157600080fd5b509092509050610481565b005b34801561018a57600080fd5b5061017c61069f565b34801561019f57600080fd5b5061017c600480360360408110156101b657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013515156107bb565b3480156101e757600080fd5b5061017c610967565b3480156101fc57600080fd5b506102306004803603602081101561021357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610a5c565b604080519115158252519081900360200190f35b34801561025057600080fd5b50610259610a62565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561028e57600080fd5b5061017c600480360360208110156102a557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610a7e565b3480156102ce57600080fd5b50610259610b79565b3480156102e357600080fd5b50610259610b95565b61017c6004803603608081101561030257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101358216916040820135169060600135610bb1565b34801561034157600080fd5b5061017c6004803603602081101561035857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610c6b565b6104206004803603608081101561038b57600080fd5b73ffffffffffffffffffffffffffffffffffffffff82358116926020810135909116916bffffffffffffffffffffffff60408301351691908101906080810160608201356401000000008111156103e157600080fd5b8201836020820111156103f357600080fd5b8035906020019184600183028401116401000000008311171561041557600080fd5b509092509050610de3565b604080516bffffffffffffffffffffffff9092168252519081900360200190f35b34801561044d57600080fd5b506102306004803603602081101561046457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661113b565b60025473ffffffffffffffffffffffffffffffffffffffff16331461050757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015290519081900360640190fd5b828061051257610696565b61051b8561114c565b1561054957610543845a73ffffffffffffffffffffffffffffffffffffffff89169190611166565b50610696565b61056a73ffffffffffffffffffffffffffffffffffffffff861687866111fe565b6106965760008573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156105d757600080fd5b505afa1580156105eb573d6000803e3d6000fd5b505050506040513d602081101561060157600080fd5b5051905084811061067357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f554e455850454354454400000000000000000000000000000000000000000000604482015290519081900360640190fd5b61069473ffffffffffffffffffffffffffffffffffffffff87168883611214565b505b50505050505050565b60015473ffffffffffffffffffffffffffffffffffffffff16331461072557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015290519081900360640190fd5b6001546000805460405173ffffffffffffffffffffffffffffffffffffffff93841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff841617909155169055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461084157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526003602052604090205460ff16151581151514156108dc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f494e56414c49445f56414c554500000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff821660008181526003602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016851515908117909155825190815291517f5ca546e2df4ecf26ee1e85b99c7fc08237e0fc2bc8df80f9f3e0fa5a7116ed819281900390910190a25050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146109ed57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b50600190565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60025473ffffffffffffffffffffffffffffffffffffffff16158015610ab9575073ffffffffffffffffffffffffffffffffffffffff811615155b610b2457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f494e56414c49445f45584348414e474500000000000000000000000000000000604482015290519081900360640190fd5b60008054337fffffffffffffffffffffffff0000000000000000000000000000000000000000918216179091556002805490911673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60025473ffffffffffffffffffffffffffffffffffffffff163314610c3757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015290519081900360640190fd5b8080610c4257610c64565b610c6473ffffffffffffffffffffffffffffffffffffffff8416868685611225565b5050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610cf157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811615801590610d31575060005473ffffffffffffffffffffffffffffffffffffffff828116911614155b610d9c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f494e56414c49445f414444524553530000000000000000000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60025460009073ffffffffffffffffffffffffffffffffffffffff163314610e6c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015290519081900360640190fd5b6bffffffffffffffffffffffff841680610e8557611131565b6000610e908761114c565b15610f2c57856bffffffffffffffffffffffff16341015610f1257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f4554485f4445504f53495400000000000000000000000000604482015290519081900360640190fd5b508491506bffffffffffffffffffffffff82163403611104565b73ffffffffffffffffffffffffffffffffffffffff871660009081526003602052604081205460ff169081610f62576000610ffb565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8b16916370a08231916024808301926020929190829003018186803b158015610fce57600080fd5b505afa158015610fe2573d6000803e3d6000fd5b505050506040513d6020811015610ff857600080fd5b50515b905061102d73ffffffffffffffffffffffffffffffffffffffff8a168b306bffffffffffffffffffffffff8c16611225565b60008261104857886bffffffffffffffffffffffff166110e1565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8c16916370a08231916024808301926020929190829003018186803b1580156110b457600080fd5b505afa1580156110c8573d6000803e3d6000fd5b505050506040513d60208110156110de57600080fd5b50515b905060006110ef8284611238565b90506110fa816112af565b9650349450505050505b801561112f5761112d815a73ffffffffffffffffffffffffffffffffffffffff8b169190611166565b505b505b5095945050505050565b60006111468261114c565b92915050565b73ffffffffffffffffffffffffffffffffffffffff161590565b600061118973ffffffffffffffffffffffffffffffffffffffff8516848461131a565b9050806111f757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5452414e534645525f4641494c55524500000000000000000000000000000000604482015290519081900360640190fd5b9392505050565b600061120c8484845a6113b7565b949350505050565b6112208383835a61150c565b505050565b611232848484845a611583565b50505050565b6000828211156112a957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5355425f554e444552464c4f5700000000000000000000000000000000000000604482015290519081900360640190fd5b50900390565b60006c010000000000000000000000008210611316576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806117a66026913960400191505060405180910390fd5b5090565b600082611329575060016111f7565b600061134a8573ffffffffffffffffffffffffffffffffffffffff16611608565b60405190915073ffffffffffffffffffffffffffffffffffffffff821690849086906000818181858888f193505050503d80600081146113a6576040519150601f19603f3d011682016040523d82523d6000602084013e6113ab565b606091505b50909695505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8086166024830152604480830186905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251825160009485938a16928792869282918083835b6020831061148c57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161144f565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038160008787f1925050503d80600081146114ef576040519150601f19603f3d011682016040523d82523d6000602084013e6114f4565b606091505b505090506115018161160b565b979650505050505050565b611518848484846113b7565b61123257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5452414e534645525f4641494c55524500000000000000000000000000000000604482015290519081900360640190fd5b60006115928686868686611647565b90508061160057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5452414e534645525f4641494c55524500000000000000000000000000000000604482015290519081900360640190fd5b505050505050565b90565b60008115611316573d801561162b57602081146116345760009250611640565b60019250611640565b60206000803e60005192505b5090919050565b6040805173ffffffffffffffffffffffffffffffffffffffff80871660248301528086166044830152606480830186905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001781529251825160009485938b16928792869282918083835b6020831061172457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016116e7565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038160008787f1925050503d8060008114611787576040519150601f19603f3d011682016040523d82523d6000602084013e61178c565b606091505b505090506117998161160b565b9897505050505050505056fe53616665436173743a2076616c756520646f65736e27742066697420696e2039362062697473a2646970667358221220979e966d3e3b93489b96051bd9dd18007a01182463cd93ae5ca1c1783041e36e64736f6c63430007000033
Deployed Bytecode Sourcemap
26747:3858:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29297:664;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29297:664:0;;-1:-1:-1;29297:664:0;-1:-1:-1;29297:664:0;:::i;:::-;;8110:205;;;;;;;;;;;;;:::i;27674:317::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27674:317:0;;;;;;;;;;;:::i;1335:161::-;;;;;;;;;;;;;:::i;27999:154::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27999:154:0;;;;:::i;:::-;;;;;;;;;;;;;;;;;;395:20;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27390:276;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27390:276:0;;;;:::i;26982:23::-;;;;;;;;;;;;;:::i;7410:27::-;;;;;;;;;;;;;:::i;29969:297::-;;;;;;;;;;;;;;;;-1:-1:-1;29969:297:0;;;;;;;;;;;;;;;;;;;;;;;:::i;7783:247::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7783:247:0;;;;:::i;28161:1128::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28161:1128:0;;-1:-1:-1;28161:1128:0;-1:-1:-1;28161:1128:0;:::i;:::-;;;;;;;;;;;;;;;;;;;30274:153;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30274:153:0;;;;:::i;29297:664::-;27127:8;;;;27113:10;:22;27105:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29558:6;27232:11;27228:41:::1;;27245:7;;27228:41;29586:20:::2;29600:5;29586:13;:20::i;:::-;29582:372;;;29623:38;29643:6;29651:9;29623:19;::::0;::::2;::::0;:38;:19:::2;:38::i;:::-;;29582:372;;;29699:30;:18;::::0;::::2;29718:2:::0;29722:6;29699:18:::2;:30::i;:::-;29694:249;;29749:15;29773:5;29767:22;;;29798:4;29767:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;29767:37:0;;-1:-1:-1;29831:19:0;;::::2;29823:42;;;::::0;;::::2;::::0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;29884:43;:27;::::0;::::2;29912:2:::0;29916:10;29884:27:::2;:43::i;:::-;29694:249;;27163:1:::1;29297:664:::0;;;;;;:::o;8110:205::-;7591:12;;;;7577:10;:26;7569:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8227:12:::1;::::0;::::1;8220:5:::0;;8199:41:::1;::::0;8227:12:::1;::::0;;::::1;::::0;8220:5;;::::1;::::0;8199:41:::1;::::0;::::1;8259:12;::::0;;::::1;8251:20:::0;;;;;::::1;8259:12;::::0;::::1;8251:20;::::0;;;8282:25:::1;::::0;;8110:205::o;27674:317::-;841:5;;;;827:10;:19;819:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27826:23:::1;::::0;::::1;;::::0;;;:16:::1;:23;::::0;;;;;::::1;;:39;;::::0;::::1;;;;27818:65;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;27896:23;::::0;::::1;;::::0;;;:16:::1;:23;::::0;;;;;;;;:38;;;::::1;::::0;::::1;;::::0;;::::1;::::0;;;27950:33;;;;;;;::::1;::::0;;;;;;;;::::1;27674:317:::0;;:::o;1335:161::-;841:5;;;;827:10;:19;819:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1456:1:::1;1441:5:::0;;1420:39:::1;::::0;::::1;1441:5:::0;;::::1;::::0;1420:39:::1;::::0;1456:1;;1420:39:::1;1486:1;1470:18:::0;;;::::1;::::0;;1335:161::o;27999:154::-;-1:-1:-1;28141:4:0;;27999:154::o;395:20::-;;;;;;:::o;27390:276::-;27505:8;;:22;:8;:22;:49;;;;-1:-1:-1;27531:23:0;;;;;27505:49;27483:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27609:5;:18;;27617:10;27609:18;;;;;;;;27638:8;:20;;;;;27609:18;27638:20;;;;;;;;;;27390:276::o;26982:23::-;;;;;;:::o;7410:27::-;;;;;;:::o;29969:297::-;27127:8;;;;27113:10;:22;27105:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30185:6;27232:11;27228:41:::1;;27245:7;;27228:41;30209:49:::2;:31;::::0;::::2;30241:4:::0;30247:2;30251:6;30209:31:::2;:49::i;:::-;27163:1:::1;29969:297:::0;;;;:::o;7783:247::-;841:5;;;;827:10;:19;819:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7925:22:::1;::::0;::::1;::::0;;::::1;::::0;:43:::1;;-1:-1:-1::0;7963:5:0::1;::::0;::::1;7951:17:::0;;::::1;7963:5:::0;::::1;7951:17;;7925:43;7917:71;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;7999:12;:23:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;7783:247::o;28161:1128::-;27127:8;;28422:21;;27127:8;;27113:10;:22;27105:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27180:97:::1;::::0;::::1;27232:11:::0;27228:41:::1;;27245:7;;27228:41;28461:16:::2;28498:20;28512:5;28498:13;:20::i;:::-;28494:683;;;28556:6;28543:19;;:9;:19;;28535:51;;;::::0;;::::2;::::0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;-1:-1:-1::0;28618:6:0;;-1:-1:-1;28653:18:0::2;::::0;::::2;:9;:18;28494:683;;;28724:23;::::0;::::2;28704:17;28724:23:::0;;;:16:::2;:23;::::0;;;;;::::2;;::::0;;28783:56:::2;;28838:1;28783:56;;;28798:37;::::0;;;;;28829:4:::2;28798:37;::::0;::::2;::::0;;;:22:::2;::::0;::::2;::::0;::::2;::::0;:37;;;;;::::2;::::0;;;;;;;;:22;:37;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;28798:37:0;28783:56:::2;28762:77:::0;-1:-1:-1;28856:66:0::2;:31;::::0;::::2;28888:4:::0;28902::::2;28909:12;::::0;::::2;28856:31;:66::i;:::-;28939:17;28959:12;:61;;29014:6;28959:61;;;;;28974:37;::::0;;;;;29005:4:::2;28974:37;::::0;::::2;::::0;;;:22:::2;::::0;::::2;::::0;::::2;::::0;:37;;;;;::::2;::::0;;;;;;;;:22;:37;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;28974:37:0;28959:61:::2;28939:81:::0;-1:-1:-1;29035:9:0::2;29047:31;28939:81:::0;29064:13;29047:16:::2;:31::i;:::-;29035:43;;29110:15;:4;:13;:15::i;:::-;29093:32;;29156:9;29142:23;;28494:683;;;;;29193:15:::0;;29189:93:::2;;29225:45;29247:11;29260:9;29225:21;::::0;::::2;::::0;:45;:21:::2;:45::i;:::-;;29189:93;27268:1;27228:41:::1;27163:1;28161:1128:::0;;;;;;;:::o;30274:153::-;30371:4;30400:19;30414:4;30400:13;:19::i;:::-;30393:26;30274:153;-1:-1:-1;;30274:153:0:o;30460:142::-;30576:18;;;;30460:142::o;5405:269::-;5551:12;5591:28;:10;;;5602:6;5610:8;5591:10;:28::i;:::-;5581:38;;5638:7;5630:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5405:269;;;;;:::o;8835:291::-;8973:4;9002:116;9041:5;9061:2;9078:5;9098:9;9002:24;:116::i;:::-;8995:123;8835:291;-1:-1:-1;;;;8835:291:0:o;8549:278::-;8694:125;8742:5;8762:2;8779:5;8799:9;8694:33;:125::i;:::-;8549:278;;;:::o;10260:328::-;10432:148;10484:5;10504:4;10523:2;10540:5;10560:9;10432:37;:148::i;:::-;10260:328;;;;:::o;1915:193::-;2023:4;2058:1;2053;:6;;2045:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2095:5:0;;;1915:193::o;15024:179::-;15080:6;15115:5;15107;:13;15099:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15189:5:0;15024:179::o;4855:395::-;4992:12;5026:11;5022:55;;-1:-1:-1;5061:4:0;5054:11;;5022:55;5087:25;5115:14;:2;:12;;;:14::i;:::-;5194:48;;5087:42;;-1:-1:-1;5194:14:0;;;;5229:8;;5216:6;;5194:48;;;;5216:6;5194:14;5229:8;5194:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5180:62:0;;4855:395;-1:-1:-1;;;;;;4855:395:0:o;9452:800::-;10033:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10070:18;10033:103;;;10166:35;;;;9629:4;;;;10166:10;;;10182:8;;10033:103;;10166:35;;;;10033:103;10166:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10147:54;;;10219:25;10236:7;10219:16;:25::i;:::-;10212:32;9452:800;-1:-1:-1;;;;;;;9452:800:0:o;9134:310::-;9340:52;9365:5;9372:2;9376:5;9383:8;9340:24;:52::i;:::-;9318:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10945:417;11156:11;11170:138;11213:5;11233:4;11252:2;11269:5;11289:8;11170:28;:138::i;:::-;11156:152;;11327:6;11319:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10945:417;;;;;;:::o;4540:164::-;4691:4;4540:164::o;12240:1127::-;12350:4;12673:7;12669:666;;;12732:16;12887:61;;;;13065:2;13060:115;;;;13289:1;13278:12;;12725:584;;12887:61;12928:1;12917:12;;12887:61;;13060:115;13112:2;13109:1;13106;13091:24;13154:1;13148:8;13137:19;;12725:584;-1:-1:-1;13352:7:0;;12240:1127;-1:-1:-1;12240:1127:0:o;11370:862::-;11994:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12031:18;11994:122;;;12146:35;;;;11574:4;;;;12146:10;;;12162:8;;11994:122;;12146:35;;;;11994:122;12146:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12127:54;;;12199:25;12216:7;12199:16;:25::i;:::-;12192:32;11370:862;-1:-1:-1;;;;;;;;11370:862:0:o
Swarm Source
ipfs://979e966d3e3b93489b96051bd9dd18007a01182463cd93ae5ca1c1783041e36e
Loading...LoadingLoading...Loading
Loading...Loading
Loading...LoadingLoading...LoadingLoading...LoadingLoading...LoadingLoading...LoadingOVERVIEW
The deposit contract for Loopring Exchange v2.
Multichain Portfolio | 25 Chains
Chain Token Portfolio % Price Amount Value ETH 59.73% $0.252336 245,844,324.3191 $62,035,373.42 ETH Ether (ETH)22.41% $2,950.73 7,887.0755 $23,272,607.84 ETH 4.85% $0.999528 5,040,693.0983 $5,038,313.89 ETH 2.79% $3,436.93 842.9815 $2,897,268.33 ETH 2.46% $2.52 1,012,888.6015 $2,552,479.28 ETH 1.98% $65,617 31.3063 $2,054,225.59 ETH 1.33% $3,264.4 421.9305 $1,377,349.8 ETH 1.25% $2.52 515,654.0328 $1,299,448.16 ETH 0.81% $0.999392 841,904.9903 $841,393.11 ETH 0.47% $0.00001 47,354,955,561.0954 $487,756.04 ETH 0.46% $3.34 142,276.4471 $475,203.33 ETH 0.27% $92.74 2,985.8223 $276,904.37 ETH 0.15% $15.92 9,476.0004 $150,857.93 ETH 0.12% $0.999268 128,256.1984 $128,162.31 ETH 0.09% $0.429392 222,456.3484 $95,520.98 ETH 0.09% $14.11 6,297.9012 $88,863.39 ETH 0.08% $7.3 11,183.3259 $81,638.28 ETH 0.08% $0.697544 112,724.1341 $78,630.04 ETH 0.07% $0.435044 175,506.8767 $76,353.21 ETH 0.06% $1.41 46,723.7131 $65,880.44 ETH 0.06% $0.120127 544,173.6009 $65,369.94 ETH 0.04% $0.007081 6,355,226.1035 $45,003.77 ETH 0.03% $2.81 12,642.7957 $35,526.26 ETH 0.03% $1.69 16,976.6054 $28,690.46 ETH 0.02% $0.344422 69,465.9826 $23,925.61 ETH 0.02% $0.302615 69,696.4545 $21,091.19 ETH 0.02% $0.995177 18,975.8816 $18,884.36 ETH 0.02% $8.43 2,156.4747 $18,179.08 ETH 0.02% $0.035951 455,143.4073 $16,362.86 ETH 0.02% $65,613 0.2429 $15,940.06 ETH 0.01% $0.302334 44,196.5709 $13,362.13 ETH 0.01% $2,950.73 4.3662 $12,883.35 ETH 0.01% $0.970253 13,157.7706 $12,766.37 ETH 0.01% $0.30211 41,701.359 $12,598.4 ETH 0.01% $4.34 2,663.1605 $11,558.12 ETH <0.01% $2,681.86 3.6253 $9,722.53 ETH <0.01% $0.006541 1,296,308.5264 $8,478.99 ETH <0.01% $85.7 96.0435 $8,230.7 ETH <0.01% $0.443079 18,514.4505 $8,203.36 ETH <0.01% $0.192002 41,120.6109 $7,895.24 ETH <0.01% $0.003965 1,849,949.8888 $7,335.17 ETH <0.01% $0.493076 13,067.5361 $6,443.29 ETH <0.01% $0.001755 2,848,168.4263 $4,999.22 ETH <0.01% $2.63 1,855.2372 $4,879.27 ETH <0.01% $0.63373 7,053.6735 $4,470.12 ETH <0.01% $6,772.41 0.6437 $4,359.62 ETH <0.01% $0.319043 12,350.7143 $3,940.41 ETH <0.01% $267.2 14.5809 $3,896 ETH <0.01% $21.16 181.5627 $3,841.75 ETH <0.01% $0.284483 12,496.1549 $3,554.94 ETH <0.01% $1.1 2,945.0489 $3,227.77 ETH <0.01% $0.05084 60,172.3221 $3,059.16 ETH <0.01% $0.026032 114,819.3054 $2,988.98 ETH <0.01% $0.465562 6,158.081 $2,866.97 ETH <0.01% $0.173819 15,325.163 $2,663.8 ETH <0.01% $0.057559 39,023.3246 $2,246.15 ETH <0.01% $0.836891 2,447.019 $2,047.89 ETH <0.01% $0.378256 5,068.338 $1,917.13 ETH <0.01% $0.036251 48,430.2373 $1,755.67 ETH <0.01% $66.57 21.9058 $1,458.35 ETH <0.01% $0.710638 1,988.4876 $1,413.09 ETH <0.01% $0.41815 3,352.3931 $1,401.8 ETH <0.01% $0.004008 313,388.78 $1,255.99 ETH <0.01% $59.26 18.3444 $1,087.09 ETH <0.01% $0.648448 1,622.8303 $1,052.32 ETH <0.01% $0.238022 4,332.482 $1,031.23 ETH <0.01% $1 991.81 $995.78 ETH <0.01% $0.391671 1,929.7621 $755.83 ETH <0.01% $0.001459 517,608.0674 $755.29 ETH <0.01% $55.21 12.6008 $695.69 ETH <0.01% $0.208189 3,153.175 $656.46 ETH <0.01% $1.48 346.7226 $513.15 ETH <0.01% $0.124925 4,029.5642 $503.39 ETH <0.01% $0.033306 14,443.8768 $481.07 ETH <0.01% $0.00188 230,442.3029 $433.21 ETH <0.01% $73.53 5.8388 $429.33 ETH <0.01% $26.73 15.8463 $423.57 ETH <0.01% $0.03018 10,411.245 $314.21 ETH <0.01% $0.017367 17,881.259 $310.55 ETH <0.01% $22,188 0.0138 $305.21 ETH <0.01% $3.46 68.7557 $237.89 ETH <0.01% $0.011059 18,958.1027 $209.65 ETH <0.01% $0.006219 28,239.6312 $175.63 ETH <0.01% $24.1 7.0975 $171.02 ETH <0.01% $0.017091 8,506.961 $145.39 ETH <0.01% $0.261838 545.5099 $142.84 ETH <0.01% $2.58 53.314 $137.55 ETH <0.01% $0.13516 965.4442 $130.49 ETH <0.01% $4.25 25.5359 $108.45 ETH <0.01% $0.592692 158.9179 $94.19 ETH <0.01% $0.023299 2,458.024 $57.27 ETH <0.01% $3.58 11.5883 $41.49 ETH <0.01% $467.35 0.0691 $32.28 ETH <0.01% $0.023862 1,277.231 $30.48 ETH <0.01% $1 20.2 $20.22 ETH <0.01% $0.007316 2,753.0739 $20.14 ETH <0.01% $0.062329 285.7413 $17.81 ETH <0.01% $0.000694 21,417.141 $14.86 ETH <0.01% $0.999933 8 $8 ETH <0.01% $0.000028 250,000 $6.95 ETH <0.01% $24.4 0.2375 $5.79 ETH <0.01% $1.29 2.9978 $3.85 ETH <0.01% $4.14 0.52 $2.15 ETH <0.01% $0.139015 9.64 $1.34 ETH <0.01% $0.00122 1,000 $1.22 ETH <0.01% $0.955952 0.7887 $0.7539 ETH <0.01% $0.000724 428.4037 $0.3103 ETH <0.01% $0.005995 45 $0.2697 ETH <0.01% $0.024968 10 $0.2496 ETH <0.01% $0.161001 1 $0.161 FTM <0.01% $2.08 5 $10.4 FTM <0.01% $0.810442 0.011 $0.008915 MATIC <0.01% $0.695141 0.069 $0.047965 Loading...Loading[ Download: CSV Export ][ Download: CSV Export ]A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.
Address QR Code
My Address - Private Name Tag or Note
My Name Tag:
Private Name Tags (up to 35 characters) can be used for easy identification of addressesPrivate Note:
A private note (up to 500 characters) can be attached to this address.
Please DO NOT store any passwords or private keys here.Compiler specific version warnings:
The compiled contract might be susceptible to FullInlinerNonExpressionSplitArgumentEvaluationOrder (low-severity), MissingSideEffectsOnSelectorAccess (low-severity), AbiReencodingHeadOverflowWithStaticArrayCleanup (medium-severity), DirtyBytesArrayToStorage (low-severity), DataLocationChangeInInternalOverride (very low-severity), NestedCalldataArrayAbiReencodingSizeValidation (very low-severity), SignedImmutables (very low-severity), ABIDecodeTwoDimensionalArrayMemory (very low-severity), KeccakCaching (medium-severity), EmptyByteArrayCopy (medium-severity), DynamicArrayCleanup (medium-severity) Solidity Compiler Bugs.
Connect a Wallet
Connecting wallet for read function is optional, useful if you want to call certain functions or simply use your wallet's node.Connect a Wallet
Connecting wallet for read function is optional, useful if you want to call certain functions or simply use your wallet's node.Connect a Wallet
Connecting wallet for read function is optional, useful if you want to call certain functions or simply use your wallet's node.Before You Copy
This website uses cookies to improve your experience. By continuing to use this website, you agree to its Terms and Privacy Policy.