ETH Price: $3,089.54 (+0.62%)
Gas: 15 Gwei

Contract

0x4b89f8996892d137c3dE1312d1dD4E4F4fFcA171
 

Overview

ETH Balance

0.0000001 ETH

Eth Value

Less Than $0.01 (@ $3,089.54/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Sell Token For L...117176932021-01-24 10:07:571181 days ago1611482877IN
Loopring: Fee Vault
0 ETH0.0017984449
Sell Token For L...117176852021-01-24 10:07:041181 days ago1611482824IN
Loopring: Fee Vault
0 ETH0.0026945454
Fund DAO117175942021-01-24 9:46:161181 days ago1611481576IN
Loopring: Fee Vault
0 ETH0.003479950.00000134
Sell Token For L...113971612020-12-06 5:08:091230 days ago1607231289IN
Loopring: Fee Vault
0 ETH0.0014132221.8
Sell Token For L...110657462020-10-16 8:06:351281 days ago1602835595IN
Loopring: Fee Vault
0 ETH0.0032686550.00000145
Update Settings110589382020-10-15 7:07:501282 days ago1602745670IN
Loopring: Fee Vault
0 ETH0.0016145257.00000145
Fund DAO100970472020-05-19 15:08:301431 days ago1589900910IN
Loopring: Fee Vault
0 ETH0.0047951237
Update Settings100970472020-05-19 15:08:301431 days ago1589900910IN
Loopring: Fee Vault
0 ETH0.0016860832
Sell Token For L...100970472020-05-19 15:08:301431 days ago1589900910IN
Loopring: Fee Vault
0 ETH0.0018836430
Update Settings100970002020-05-19 14:55:101431 days ago1589900110IN
Loopring: Fee Vault
0 ETH0.0009127530
Sell Token For L...99884862020-05-02 18:48:091447 days ago1588445289IN
Loopring: Fee Vault
0 ETH0.000331733
Sell Token For L...99884722020-05-02 18:45:281447 days ago1588445128IN
Loopring: Fee Vault
0 ETH0.000331733
Sell Token For L...99884642020-05-02 18:43:311447 days ago1588445011IN
Loopring: Fee Vault
0 ETH0.000331733
Sell Token For L...99884612020-05-02 18:43:031447 days ago1588444983IN
Loopring: Fee Vault
0 ETH0.000331733
Sell Token For L...99884592020-05-02 18:41:571447 days ago1588444917IN
Loopring: Fee Vault
0 ETH0.000331733
Sell Token For L...99884442020-05-02 18:38:411447 days ago1588444721IN
Loopring: Fee Vault
0 ETH0.000331733
Sell Token For L...99884182020-05-02 18:31:391447 days ago1588444299IN
Loopring: Fee Vault
0 ETH0.000331653
Sell Token For L...99714112020-04-30 3:01:541450 days ago1588215714IN
Loopring: Fee Vault
0 ETH0.0013270612
Sell Token For L...99713912020-04-30 2:57:471450 days ago1588215467IN
Loopring: Fee Vault
0 ETH0.0011057710
Sell Token For L...99705912020-04-30 0:00:481450 days ago1588204848IN
Loopring: Fee Vault
0 ETH0.0014596113.20000014
Sell Token For L...99684202020-04-29 16:04:161450 days ago1588176256IN
Loopring: Fee Vault
0 ETH0.0016586515
Sell Token For L...99678702020-04-29 13:55:391451 days ago1588168539IN
Loopring: Fee Vault
0 ETH0.0016586515
Sell Token For L...99677982020-04-29 13:39:031451 days ago1588167543IN
Loopring: Fee Vault
0 ETH0.0013501412.21000023
Claim Ownership97111082020-03-20 21:52:511490 days ago1584741171IN
Loopring: Fee Vault
0 ETH0.000109645
Transfer Ownersh...96449442020-03-10 17:03:321500 days ago1583859812IN
Loopring: Fee Vault
0 ETH0.000265876
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To Value
117176932021-01-24 10:07:571181 days ago1611482877
Loopring: Fee Vault
0.2222478 ETH
110638512020-10-16 1:09:331281 days ago1602810573
Loopring: Fee Vault
0.2222479 ETH
110576912020-10-15 2:30:571282 days ago1602729057
Loopring: Fee Vault
0.1871502 ETH
110572572020-10-15 0:57:181282 days ago1602723438
Loopring: Fee Vault
0.1871502 ETH
110506722020-10-14 0:52:291283 days ago1602636749
Loopring: Fee Vault
0.2799067 ETH
110506322020-10-14 0:42:171283 days ago1602636137
Loopring: Fee Vault
0.2799067 ETH
110441622020-10-13 0:58:161284 days ago1602550696
Loopring: Fee Vault
0.231285 ETH
110441422020-10-13 0:55:341284 days ago1602550534
Loopring: Fee Vault
0.231285 ETH
110439892020-10-13 0:24:481284 days ago1602548688
Loopring: Fee Vault
0.1352313 ETH
110439252020-10-13 0:10:171284 days ago1602547817
Loopring: Fee Vault
0.1352313 ETH
110402662020-10-12 10:36:401285 days ago1602499000
Loopring: Fee Vault
0.1613545 ETH
110401212020-10-12 10:05:011285 days ago1602497101
Loopring: Fee Vault
0.1613545 ETH
110355692020-10-11 17:22:201285 days ago1602436940
Loopring: Fee Vault
0.2319985 ETH
110345302020-10-11 13:40:191286 days ago1602423619
Loopring: Fee Vault
0.2319985 ETH
110211882020-10-09 12:12:571288 days ago1602245577
Loopring: Fee Vault
0.18968364 ETH
110205332020-10-09 9:50:201288 days ago1602237020
Loopring: Fee Vault
0.1285431 ETH
110109112020-10-07 21:15:381289 days ago1602105338
Loopring: Fee Vault
0.06114054 ETH
110063212020-10-07 3:57:541290 days ago1602043074
Loopring: Fee Vault
0.176167 ETH
110056752020-10-07 1:25:201290 days ago1602033920
Loopring: Fee Vault
0.176167 ETH
109978822020-10-05 20:27:341291 days ago1601929654
Loopring: Fee Vault
0.14547447 ETH
109978632020-10-05 20:22:141291 days ago1601929334
Loopring: Fee Vault
0.07521639 ETH
109947672020-10-05 8:55:591292 days ago1601888159
Loopring: Fee Vault
0.00197094 ETH
109945622020-10-05 8:10:111292 days ago1601885411
Loopring: Fee Vault
0.06828714 ETH
109886912020-10-04 9:55:111293 days ago1601805311
Loopring: Fee Vault
0.28899733 ETH
109886532020-10-04 9:47:121293 days ago1601804832
Loopring: Fee Vault
0.00000006 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ProtocolFeeVault

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-03-10
*/

/*

  Copyright 2017 Loopring Project Ltd (Loopring Foundation).

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
*/
pragma solidity ^0.5.11;


/// @title ERC20 Token Interface
/// @dev see https://github.com/ethereum/EIPs/issues/20
/// @author Daniel Wang - <[email protected]>
contract ERC20
{
    function totalSupply()
        public
        view
        returns (uint);

    function balanceOf(
        address who
        )
        public
        view
        returns (uint);

    function allowance(
        address owner,
        address spender
        )
        public
        view
        returns (uint);

    function transfer(
        address to,
        uint value
        )
        public
        returns (bool);

    function transferFrom(
        address from,
        address to,
        uint    value
        )
        public
        returns (bool);

    function approve(
        address spender,
        uint    value
        )
        public
        returns (bool);
}
/*

  Copyright 2017 Loopring Project Ltd (Loopring Foundation).

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
*/


/*

  Copyright 2017 Loopring Project Ltd (Loopring Foundation).

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
*/



/// @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)
    {
        uint32 size;
        assembly { size := extcodesize(addr) }
        return (size > 0);
    }

    function toPayable(
        address addr
        )
        internal
        pure
        returns (address payable)
    {
        return address(uint160(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");
    }
}

/*

  Copyright 2017 Loopring Project Ltd (Loopring Foundation).

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
*/





/// @title Burnable ERC20 Token Interface
/// @author Brecht Devos - <[email protected]>
contract BurnableERC20 is ERC20
{
    function burn(
        uint value
        )
        public
        returns (bool);

    function burnFrom(
        address from,
        uint value
        )
        public
        returns (bool);
}

/*

  Copyright 2017 Loopring Project Ltd (Loopring Foundation).

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
*/


/*

  Copyright 2017 Loopring Project Ltd (Loopring Foundation).

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
*/



/// @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()
        public
    {
        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
        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);
    }
}



/// @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
        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 Project Ltd (Loopring Foundation).

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
*/



/// @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,uint)")) = 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,uint)")) = 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;
    }
}
/*

  Copyright 2017 Loopring Project Ltd (Loopring Foundation).

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
*/



/// @title Utility Functions for uint
/// @author Daniel Wang - <[email protected]>
library MathUint
{
    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 decodeFloat(
        uint f
        )
        internal
        pure
        returns (uint value)
    {
        uint numBitsMantissa = 23;
        uint exponent = f >> numBitsMantissa;
        uint mantissa = f & ((1 << numBitsMantissa) - 1);
        value = mantissa * (10 ** exponent);
    }
}

/*

  Copyright 2017 Loopring Project Ltd (Loopring Foundation).

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
*/



/// @title ReentrancyGuard
/// @author Brecht Devos - <[email protected]>
/// @dev Exposes a modifier that guards a function against reentrancy
///      Changing the value of the same storage value multiple times in a transaction
///      is cheap (starting from Istanbul) so there is no need to minimize
///      the number of times the value is changed
contract ReentrancyGuard
{
    //The default value must be 0 in order to work behind a proxy.
    uint private _guardValue;

    // Use this modifier on a function to prevent reentrancy
    modifier nonReentrant()
    {
        // Check if the guard value has its original value
        require(_guardValue == 0, "REENTRANCY");

        // Set the value to something else
        _guardValue = 1;

        // Function body
        _;

        // Set the value back
        _guardValue = 0;
    }
}


/*

  Copyright 2017 Loopring Project Ltd (Loopring Foundation).

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
*/



/// @title IProtocolFeeVault
/// @dev This smart contract manages the distribution of protocol fees.
///     Tokens other than LRC will be sold by TokenSeller,
///     If no TokenSeller is set, the tokens or Ether will be sent to the owner
///     to sell them for LRC by other means such as using a centralized exchange.
///     For LRC token, 70% of them can be withdrawn to the UserStakingPool contract
///     to reward LRC stakers; 20% of them can be withdrawn to the Loopring DAO,
///     and the remaining 10% can be burned to reduce LRC's total supply.
contract IProtocolFeeVault
{
    uint public constant REWARD_PERCENTAGE      = 70;
    uint public constant DAO_PERDENTAGE         = 20;

    address public userStakingPoolAddress;
    address public lrcAddress;
    address public tokenSellerAddress;
    address public daoAddress;

    uint claimedReward;
    uint claimedDAOFund;
    uint claimedBurn;

    event LRCClaimed(uint amount);
    event DAOFunded(uint amountDAO, uint amountBurn);
    event TokenSold(address token, uint amount);
    event SettingsUpdated(uint time);

    /// @dev Sets depdending contract address. All these addresses can be zero.
    /// @param _userStakingPoolAddress The address of the user staking pool.
    /// @param _tokenSellerAddress The address of the token seller.
    /// @param _daoAddress The address of the DAO contract.
    function updateSettings(
        address _userStakingPoolAddress,
        address _tokenSellerAddress,
        address _daoAddress
        )
        external;

    /// @dev Claims LRC as staking reward to the IUserStakingPool contract.
    ///      Note that this function can only be called by
    ///      the IUserStakingPool contract.
    ///
    /// @param amount The amount of LRC to be claimed.
    function claimStakingReward(uint amount) external;

    /// @dev Withdraws LRC to DAO and in the meanwhile burn some LRC according to
    ///      the predefined percentages.
    function fundDAO() external;

    /// @dev Sells a non-LRC token or Ether to LRC. If no TokenSeller is set,
    ///      the tokens or Ether will be sent to the owner.
    /// @param token The token or ether (0x0) to sell.
    /// @param amount THe amout of token/ether to sell.
    function sellTokenForLRC(
        address token,
        uint    amount
        )
        external;

    /// @dev Returns some global stats regarding fees.
    /// @return accumulatedFees The accumulated amount of LRC protocol fees.
    /// @return accumulatedBurn The accumulated amount of LRC to burn.
    /// @return accumulatedDAOFund The accumulated amount of LRC as developer pool.
    /// @return accumulatedReward The accumulated amount of LRC as staking reward.
    /// @return remainingFees The remaining amount of LRC protocol fees.
    /// @return remainingBurn The remaining amount of LRC to burn.
    /// @return remainingDAOFund The remaining amount of LRC as developer pool.
    /// @return remainingReward The remaining amount of LRC as staking reward.
    function getProtocolFeeStats()
        public
        view
        returns (
            uint accumulatedFees,
            uint accumulatedBurn,
            uint accumulatedDAOFund,
            uint accumulatedReward,
            uint remainingFees,
            uint remainingBurn,
            uint remainingDAOFund,
            uint remainingReward
        );
}

/*

  Copyright 2017 Loopring Project Ltd (Loopring Foundation).

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
*/


/// @title ITokenSeller
/// @dev Use this contract to sell tokenS for as many tokenB.
/// @author Daniel Wang  - <[email protected]>
contract ITokenSeller
{
    /// @dev Sells all tokenS for tokenB
    /// @param tokenS The token or Ether (0x0) to sell.
    /// @param tokenB The token to buy.
    /// @return success True if success, false otherwise.
    function sellToken(
        address tokenS,
        address tokenB
        )
        external
        payable
        returns (bool success);
}

/// @title An Implementation of IProtocolFeeVault.
/// @author Daniel Wang - <[email protected]>
contract ProtocolFeeVault is Claimable, ReentrancyGuard, IProtocolFeeVault
{
    using AddressUtil       for address;
    using AddressUtil       for address payable;
    using ERC20SafeTransfer for address;
    using MathUint          for uint;

    constructor(address _lrcAddress)
        Claimable()
        public
    {
        require(_lrcAddress != address(0), "ZERO_ADDRESS");
        lrcAddress = _lrcAddress;
    }

    function() external payable { }

    function updateSettings(
        address _userStakingPoolAddress,
        address _tokenSellerAddress,
        address _daoAddress
        )
        external
        nonReentrant
        onlyOwner
    {
        require(
            userStakingPoolAddress != _userStakingPoolAddress ||
            tokenSellerAddress != _tokenSellerAddress ||
            daoAddress != _daoAddress,
            "SAME_ADDRESSES"
        );
        userStakingPoolAddress = _userStakingPoolAddress;
        tokenSellerAddress = _tokenSellerAddress;
        daoAddress = _daoAddress;

        emit SettingsUpdated(now);
    }

    function claimStakingReward(
        uint amount
        )
        external
        nonReentrant
    {
        require(amount > 0, "ZERO_VALUE");
        require(msg.sender == userStakingPoolAddress, "UNAUTHORIZED");
        lrcAddress.safeTransferAndVerify(userStakingPoolAddress, amount);
        claimedReward = claimedReward.add(amount);
        emit LRCClaimed(amount);
    }

    function fundDAO()
        external
        nonReentrant
    {
        uint amountDAO;
        uint amountBurn;
        (, , , , , amountBurn, amountDAO, ) = getProtocolFeeStats();

        address recipient = daoAddress == address(0) ? owner : daoAddress;

        if (amountDAO > 0) {
            lrcAddress.safeTransferAndVerify(recipient, amountDAO);
        }

        if (amountBurn > 0) {
            require(BurnableERC20(lrcAddress).burn(amountBurn), "BURN_FAILURE");
        }

        claimedBurn = claimedBurn.add(amountBurn);
        claimedDAOFund = claimedDAOFund.add(amountDAO);

        emit DAOFunded(amountDAO, amountBurn);
    }

    function sellTokenForLRC(
        address token,
        uint    amount
        )
        external
        nonReentrant
    {
        require(amount > 0, "ZERO_AMOUNT");
        require(token != lrcAddress, "PROHIBITED");

        address recipient = tokenSellerAddress == address(0) ? owner : tokenSellerAddress;

        if (token == address(0)) {
            recipient.sendETHAndVerify(amount, gasleft());
        } else {
            token.safeTransferAndVerify(recipient, amount);
        }

        require(
            tokenSellerAddress == address(0) ||
            ITokenSeller(tokenSellerAddress).sellToken(token, lrcAddress),
            "SELL_FAILURE"
        );

        emit TokenSold(token, amount);
    }

    function getProtocolFeeStats()
        public
        view
        returns (
            uint accumulatedFees,
            uint accumulatedBurn,
            uint accumulatedDAOFund,
            uint accumulatedReward,
            uint remainingFees,
            uint remainingBurn,
            uint remainingDAOFund,
            uint remainingReward
        )
    {
        remainingFees = ERC20(lrcAddress).balanceOf(address(this));
        accumulatedFees = remainingFees.add(claimedReward).add(claimedDAOFund).add(claimedBurn);

        accumulatedReward = accumulatedFees.mul(REWARD_PERCENTAGE) / 100;
        accumulatedDAOFund = accumulatedFees.mul(DAO_PERDENTAGE) / 100;
        accumulatedBurn = accumulatedFees.sub(accumulatedReward).sub(accumulatedDAOFund);

        remainingReward = accumulatedReward.sub(claimedReward);
        remainingDAOFund = accumulatedDAOFund.sub(claimedDAOFund);
        remainingBurn = accumulatedBurn.sub(claimedBurn);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_lrcAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountDAO","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBurn","type":"uint256"}],"name":"DAOFunded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LRCClaimed","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":[{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"SettingsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokenSold","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[],"name":"DAO_PERDENTAGE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"REWARD_PERCENTAGE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"claimOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"claimStakingReward","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"daoAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"fundDAO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getProtocolFeeStats","outputs":[{"internalType":"uint256","name":"accumulatedFees","type":"uint256"},{"internalType":"uint256","name":"accumulatedBurn","type":"uint256"},{"internalType":"uint256","name":"accumulatedDAOFund","type":"uint256"},{"internalType":"uint256","name":"accumulatedReward","type":"uint256"},{"internalType":"uint256","name":"remainingFees","type":"uint256"},{"internalType":"uint256","name":"remainingBurn","type":"uint256"},{"internalType":"uint256","name":"remainingDAOFund","type":"uint256"},{"internalType":"uint256","name":"remainingReward","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lrcAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sellTokenForLRC","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokenSellerAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_userStakingPoolAddress","type":"address"},{"internalType":"address","name":"_tokenSellerAddress","type":"address"},{"internalType":"address","name":"_daoAddress","type":"address"}],"name":"updateSettings","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"userStakingPoolAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b506040516112f93803806112f98339818101604052602081101561003357600080fd5b5051600080546001600160a01b031916331790556001600160a01b038116610091576040805162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055611239806100c06000396000f3fe6080604052600436106100f35760003560e01c806368b79c321161008a578063e30c397811610059578063e30c3978146102c9578063e3fe4764146102de578063f2fde38b146102f3578063fc72b1ed14610326576100f3565b806368b79c3214610263578063715018a61461028a5780638da5cb5b1461029f578063a0cea6c0146102b4576100f3565b80633d6cf722116100c65780633d6cf722146101df5780634e71e0c8146101f457806357aabe9114610209578063611633791461024e576100f3565b80632131c68c146100f5578063239cd4a4146101265780632a7bf6bf14610150578063365a906c14610189575b005b34801561010157600080fd5b5061010a61033b565b604080516001600160a01b039092168252519081900360200190f35b34801561013257600080fd5b506100f36004803603602081101561014957600080fd5b503561034a565b34801561015c57600080fd5b506100f36004803603604081101561017357600080fd5b506001600160a01b038135169060200135610492565b34801561019557600080fd5b5061019e610711565b604080519889526020890197909752878701959095526060870193909352608086019190915260a085015260c084015260e083015251908190036101000190f35b3480156101eb57600080fd5b5061010a610891565b34801561020057600080fd5b506100f36108a0565b34801561021557600080fd5b506100f36004803603606081101561022c57600080fd5b506001600160a01b038135811691602081013582169160409091013516610952565b34801561025a57600080fd5b506100f3610ae7565b34801561026f57600080fd5b50610278610ccd565b60408051918252519081900360200190f35b34801561029657600080fd5b506100f3610cd2565b3480156102ab57600080fd5b5061010a610d6a565b3480156102c057600080fd5b5061010a610d79565b3480156102d557600080fd5b5061010a610d88565b3480156102ea57600080fd5b5061010a610d97565b3480156102ff57600080fd5b506100f36004803603602081101561031657600080fd5b50356001600160a01b0316610da6565b34801561033257600080fd5b50610278610e7f565b6006546001600160a01b031681565b6002541561038c576040805162461bcd60e51b815260206004820152600a6024820152695245454e5452414e435960b01b604482015290519081900360640190fd5b6001600255806103d0576040805162461bcd60e51b815260206004820152600a6024820152695a45524f5f56414c554560b01b604482015290519081900360640190fd5b6003546001600160a01b0316331461041e576040805162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015290519081900360640190fd5b600354600454610441916001600160a01b0391821691168363ffffffff610e8416565b600754610454908263ffffffff610e9516565b6007556040805182815290517faf9f8e373f3b94eb4c733ac25dd927271dc24febef9ae82f0868502653fdb65c9181900360200190a1506000600255565b600254156104d4576040805162461bcd60e51b815260206004820152600a6024820152695245454e5452414e435960b01b604482015290519081900360640190fd5b600160025580610519576040805162461bcd60e51b815260206004820152600b60248201526a16915493d7d05353d5539560aa1b604482015290519081900360640190fd5b6004546001600160a01b0383811691161415610569576040805162461bcd60e51b815260206004820152600a602482015269141493d212509255115160b21b604482015290519081900360640190fd5b6005546000906001600160a01b03161561058e576005546001600160a01b031661059b565b6000546001600160a01b03165b90506001600160a01b0383166105cd576105c7825a6001600160a01b038416919063ffffffff610ee216565b506105e7565b6105e76001600160a01b038416828463ffffffff610e8416565b6005546001600160a01b031615806106835750600554600480546040805163dc42f97160e01b81526001600160a01b0388811694820194909452918316602483015251919092169163dc42f9719160448083019260209291908290030181600087803b15801561065657600080fd5b505af115801561066a573d6000803e3d6000fd5b505050506040513d602081101561068057600080fd5b50515b6106c3576040805162461bcd60e51b815260206004820152600c60248201526b53454c4c5f4641494c55524560a01b604482015290519081900360640190fd5b604080516001600160a01b03851681526020810184905281517ffe2ff4cf36ff7d2c2b06eb960897ee0d76d9c3e58da12feb7b93e86b226dd344929181900390910190a15050600060025550565b600080600080600080600080600460009054906101000a90046001600160a01b03166001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561078857600080fd5b505afa15801561079c573d6000803e3d6000fd5b505050506040513d60208110156107b257600080fd5b50516009546008546007549296506107e4926107d891908290899063ffffffff610e9516565b9063ffffffff610e9516565b975060646107f989604663ffffffff610f4c16565b8161080057fe5b049450606461081689601463ffffffff610f4c16565b8161081d57fe5b049550610840866108348a8863ffffffff610fa416565b9063ffffffff610fa416565b965061085760075486610fa490919063ffffffff16565b905061086e60085487610fa490919063ffffffff16565b915061088560095488610fa490919063ffffffff16565b92509091929394959697565b6004546001600160a01b031681565b6001546001600160a01b031633146108ee576040805162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015290519081900360640190fd5b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b60025415610994576040805162461bcd60e51b815260206004820152600a6024820152695245454e5452414e435960b01b604482015290519081900360640190fd5b60016002556000546001600160a01b031633146109e7576040805162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015290519081900360640190fd5b6003546001600160a01b038481169116141580610a1257506005546001600160a01b03838116911614155b80610a2b57506006546001600160a01b03828116911614155b610a6d576040805162461bcd60e51b815260206004820152600e60248201526d53414d455f41444452455353455360901b604482015290519081900360640190fd5b600380546001600160a01b038086166001600160a01b0319928316179092556005805485841690831617905560068054928416929091169190911790556040805142815290517f4b804a0bfbdc2639203b93035be561d86f65f52b7e14984f95ec9d298cafccac9181900360200190a15050600060025550565b60025415610b29576040805162461bcd60e51b815260206004820152600a6024820152695245454e5452414e435960b01b604482015290519081900360640190fd5b6001600255600080610b39610711565b50600654909850909650600095506001600160a01b0316159350610b6c92505050576006546001600160a01b0316610b79565b6000546001600160a01b03165b90508215610b9e57600454610b9e906001600160a01b0316828563ffffffff610e8416565b8115610c5c576004805460408051630852cd8d60e31b8152928301859052516001600160a01b03909116916342966c689160248083019260209291908290030181600087803b158015610bf057600080fd5b505af1158015610c04573d6000803e3d6000fd5b505050506040513d6020811015610c1a57600080fd5b5051610c5c576040805162461bcd60e51b815260206004820152600c60248201526b4255524e5f4641494c55524560a01b604482015290519081900360640190fd5b600954610c6f908363ffffffff610e9516565b600955600854610c85908463ffffffff610e9516565b600855604080518481526020810184905281517ff5deee3dde315bb684736ad09d95603ad754fe04704f5a2f0719216a09dac68d929181900390910190a15050600060025550565b601481565b6000546001600160a01b03163314610d20576040805162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031681565b6003546001600160a01b031681565b6001546001600160a01b031681565b6005546001600160a01b031681565b6000546001600160a01b03163314610df4576040805162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015290519081900360640190fd5b6001600160a01b03811615801590610e1a57506000546001600160a01b03828116911614155b610e5d576040805162461bcd60e51b815260206004820152600f60248201526e494e56414c49445f4144445245535360881b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b604681565b610e908383835a610ff1565b505050565b81810182811015610edc576040805162461bcd60e51b815260206004820152600c60248201526b4144445f4f564552464c4f5760a01b604482015290519081900360640190fd5b92915050565b6000610efe6001600160a01b038516848463ffffffff61104716565b905080610f45576040805162461bcd60e51b815260206004820152601060248201526f5452414e534645525f4641494c55524560801b604482015290519081900360640190fd5b9392505050565b818102821580610f64575081838281610f6157fe5b04145b610edc576040805162461bcd60e51b815260206004820152600c60248201526b4d554c5f4f564552464c4f5760a01b604482015290519081900360640190fd5b600082821115610feb576040805162461bcd60e51b815260206004820152600d60248201526c5355425f554e444552464c4f5760981b604482015290519081900360640190fd5b50900390565b610ffd848484846110ca565b611041576040805162461bcd60e51b815260206004820152601060248201526f5452414e534645525f4641494c55524560801b604482015290519081900360640190fd5b50505050565b60008261105657506001610f45565b600061106a856001600160a01b03166111c6565b6040519091506001600160a01b03821690849086906000818181858888f193505050503d80600081146110b9576040519150601f19603f3d011682016040523d82523d6000602084013e6110be565b606091505b50909695505050505050565b604080516001600160a01b038086166024830152604480830186905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1781529251825160009485938a16928792869282918083835b602083106111465780518252601f199092019160209182019101611127565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038160008787f1925050503d80600081146111a9576040519150601f19603f3d011682016040523d82523d6000602084013e6111ae565b606091505b505090506111bb816111c9565b979650505050505050565b90565b60008115611200573d80156111e957602081146111f257600092506111fe565b600192506111fe565b60206000803e60005192505b505b509056fea265627a7a72315820d6c666379e3205e991bbc18c9be175a4567af7fe2545e38a306418a201e40b3b64736f6c63430005100032000000000000000000000000bbbbca6a901c926f240b89eacb641d8aec7aeafd

Deployed Bytecode

0x6080604052600436106100f35760003560e01c806368b79c321161008a578063e30c397811610059578063e30c3978146102c9578063e3fe4764146102de578063f2fde38b146102f3578063fc72b1ed14610326576100f3565b806368b79c3214610263578063715018a61461028a5780638da5cb5b1461029f578063a0cea6c0146102b4576100f3565b80633d6cf722116100c65780633d6cf722146101df5780634e71e0c8146101f457806357aabe9114610209578063611633791461024e576100f3565b80632131c68c146100f5578063239cd4a4146101265780632a7bf6bf14610150578063365a906c14610189575b005b34801561010157600080fd5b5061010a61033b565b604080516001600160a01b039092168252519081900360200190f35b34801561013257600080fd5b506100f36004803603602081101561014957600080fd5b503561034a565b34801561015c57600080fd5b506100f36004803603604081101561017357600080fd5b506001600160a01b038135169060200135610492565b34801561019557600080fd5b5061019e610711565b604080519889526020890197909752878701959095526060870193909352608086019190915260a085015260c084015260e083015251908190036101000190f35b3480156101eb57600080fd5b5061010a610891565b34801561020057600080fd5b506100f36108a0565b34801561021557600080fd5b506100f36004803603606081101561022c57600080fd5b506001600160a01b038135811691602081013582169160409091013516610952565b34801561025a57600080fd5b506100f3610ae7565b34801561026f57600080fd5b50610278610ccd565b60408051918252519081900360200190f35b34801561029657600080fd5b506100f3610cd2565b3480156102ab57600080fd5b5061010a610d6a565b3480156102c057600080fd5b5061010a610d79565b3480156102d557600080fd5b5061010a610d88565b3480156102ea57600080fd5b5061010a610d97565b3480156102ff57600080fd5b506100f36004803603602081101561031657600080fd5b50356001600160a01b0316610da6565b34801561033257600080fd5b50610278610e7f565b6006546001600160a01b031681565b6002541561038c576040805162461bcd60e51b815260206004820152600a6024820152695245454e5452414e435960b01b604482015290519081900360640190fd5b6001600255806103d0576040805162461bcd60e51b815260206004820152600a6024820152695a45524f5f56414c554560b01b604482015290519081900360640190fd5b6003546001600160a01b0316331461041e576040805162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015290519081900360640190fd5b600354600454610441916001600160a01b0391821691168363ffffffff610e8416565b600754610454908263ffffffff610e9516565b6007556040805182815290517faf9f8e373f3b94eb4c733ac25dd927271dc24febef9ae82f0868502653fdb65c9181900360200190a1506000600255565b600254156104d4576040805162461bcd60e51b815260206004820152600a6024820152695245454e5452414e435960b01b604482015290519081900360640190fd5b600160025580610519576040805162461bcd60e51b815260206004820152600b60248201526a16915493d7d05353d5539560aa1b604482015290519081900360640190fd5b6004546001600160a01b0383811691161415610569576040805162461bcd60e51b815260206004820152600a602482015269141493d212509255115160b21b604482015290519081900360640190fd5b6005546000906001600160a01b03161561058e576005546001600160a01b031661059b565b6000546001600160a01b03165b90506001600160a01b0383166105cd576105c7825a6001600160a01b038416919063ffffffff610ee216565b506105e7565b6105e76001600160a01b038416828463ffffffff610e8416565b6005546001600160a01b031615806106835750600554600480546040805163dc42f97160e01b81526001600160a01b0388811694820194909452918316602483015251919092169163dc42f9719160448083019260209291908290030181600087803b15801561065657600080fd5b505af115801561066a573d6000803e3d6000fd5b505050506040513d602081101561068057600080fd5b50515b6106c3576040805162461bcd60e51b815260206004820152600c60248201526b53454c4c5f4641494c55524560a01b604482015290519081900360640190fd5b604080516001600160a01b03851681526020810184905281517ffe2ff4cf36ff7d2c2b06eb960897ee0d76d9c3e58da12feb7b93e86b226dd344929181900390910190a15050600060025550565b600080600080600080600080600460009054906101000a90046001600160a01b03166001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561078857600080fd5b505afa15801561079c573d6000803e3d6000fd5b505050506040513d60208110156107b257600080fd5b50516009546008546007549296506107e4926107d891908290899063ffffffff610e9516565b9063ffffffff610e9516565b975060646107f989604663ffffffff610f4c16565b8161080057fe5b049450606461081689601463ffffffff610f4c16565b8161081d57fe5b049550610840866108348a8863ffffffff610fa416565b9063ffffffff610fa416565b965061085760075486610fa490919063ffffffff16565b905061086e60085487610fa490919063ffffffff16565b915061088560095488610fa490919063ffffffff16565b92509091929394959697565b6004546001600160a01b031681565b6001546001600160a01b031633146108ee576040805162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015290519081900360640190fd5b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b60025415610994576040805162461bcd60e51b815260206004820152600a6024820152695245454e5452414e435960b01b604482015290519081900360640190fd5b60016002556000546001600160a01b031633146109e7576040805162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015290519081900360640190fd5b6003546001600160a01b038481169116141580610a1257506005546001600160a01b03838116911614155b80610a2b57506006546001600160a01b03828116911614155b610a6d576040805162461bcd60e51b815260206004820152600e60248201526d53414d455f41444452455353455360901b604482015290519081900360640190fd5b600380546001600160a01b038086166001600160a01b0319928316179092556005805485841690831617905560068054928416929091169190911790556040805142815290517f4b804a0bfbdc2639203b93035be561d86f65f52b7e14984f95ec9d298cafccac9181900360200190a15050600060025550565b60025415610b29576040805162461bcd60e51b815260206004820152600a6024820152695245454e5452414e435960b01b604482015290519081900360640190fd5b6001600255600080610b39610711565b50600654909850909650600095506001600160a01b0316159350610b6c92505050576006546001600160a01b0316610b79565b6000546001600160a01b03165b90508215610b9e57600454610b9e906001600160a01b0316828563ffffffff610e8416565b8115610c5c576004805460408051630852cd8d60e31b8152928301859052516001600160a01b03909116916342966c689160248083019260209291908290030181600087803b158015610bf057600080fd5b505af1158015610c04573d6000803e3d6000fd5b505050506040513d6020811015610c1a57600080fd5b5051610c5c576040805162461bcd60e51b815260206004820152600c60248201526b4255524e5f4641494c55524560a01b604482015290519081900360640190fd5b600954610c6f908363ffffffff610e9516565b600955600854610c85908463ffffffff610e9516565b600855604080518481526020810184905281517ff5deee3dde315bb684736ad09d95603ad754fe04704f5a2f0719216a09dac68d929181900390910190a15050600060025550565b601481565b6000546001600160a01b03163314610d20576040805162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031681565b6003546001600160a01b031681565b6001546001600160a01b031681565b6005546001600160a01b031681565b6000546001600160a01b03163314610df4576040805162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015290519081900360640190fd5b6001600160a01b03811615801590610e1a57506000546001600160a01b03828116911614155b610e5d576040805162461bcd60e51b815260206004820152600f60248201526e494e56414c49445f4144445245535360881b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b604681565b610e908383835a610ff1565b505050565b81810182811015610edc576040805162461bcd60e51b815260206004820152600c60248201526b4144445f4f564552464c4f5760a01b604482015290519081900360640190fd5b92915050565b6000610efe6001600160a01b038516848463ffffffff61104716565b905080610f45576040805162461bcd60e51b815260206004820152601060248201526f5452414e534645525f4641494c55524560801b604482015290519081900360640190fd5b9392505050565b818102821580610f64575081838281610f6157fe5b04145b610edc576040805162461bcd60e51b815260206004820152600c60248201526b4d554c5f4f564552464c4f5760a01b604482015290519081900360640190fd5b600082821115610feb576040805162461bcd60e51b815260206004820152600d60248201526c5355425f554e444552464c4f5760981b604482015290519081900360640190fd5b50900390565b610ffd848484846110ca565b611041576040805162461bcd60e51b815260206004820152601060248201526f5452414e534645525f4641494c55524560801b604482015290519081900360640190fd5b50505050565b60008261105657506001610f45565b600061106a856001600160a01b03166111c6565b6040519091506001600160a01b03821690849086906000818181858888f193505050503d80600081146110b9576040519150601f19603f3d011682016040523d82523d6000602084013e6110be565b606091505b50909695505050505050565b604080516001600160a01b038086166024830152604480830186905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1781529251825160009485938a16928792869282918083835b602083106111465780518252601f199092019160209182019101611127565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038160008787f1925050503d80600081146111a9576040519150601f19603f3d011682016040523d82523d6000602084013e6111ae565b606091505b505090506111bb816111c9565b979650505050505050565b90565b60008115611200573d80156111e957602081146111f257600092506111fe565b600192506111fe565b60206000803e60005192505b505b509056fea265627a7a72315820d6c666379e3205e991bbc18c9be175a4567af7fe2545e38a306418a201e40b3b64736f6c63430005100032

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

000000000000000000000000bbbbca6a901c926f240b89eacb641d8aec7aeafd

-----Decoded View---------------
Arg [0] : _lrcAddress (address): 0xBBbbCA6A901c926F240b89EacB641d8Aec7AEafD

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000bbbbca6a901c926f240b89eacb641d8aec7aeafd


Deployed Bytecode Sourcemap

23313:3936:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19425:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19425:25:0;;;:::i;:::-;;;;-1:-1:-1;;;;;19425:25:0;;;;;;;;;;;;;;24429:391;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24429:391:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24429:391:0;;:::i;25506:745::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25506:745:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;25506:745:0;;;;;;;;:::i;26259:987::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26259:987:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19353:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19353:25:0;;;:::i;8948:205::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8948:205:0;;;:::i;23797:624::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23797:624:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;23797:624:0;;;;;;;;;;;;;;;;;;;:::i;24828:670::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24828:670:0;;;:::i;19252:48::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19252:48:0;;;:::i;:::-;;;;;;;;;;;;;;;;7837:161;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7837:161:0;;;:::i;6898:20::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6898:20:0;;;:::i;19309:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19309:37:0;;;:::i;8266:27::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8266:27:0;;;:::i;19385:33::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19385:33:0;;;:::i;8639:229::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8639:229:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8639:229:0;-1:-1:-1;;;;;8639:229:0;;:::i;19197:48::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19197:48:0;;;:::i;19425:25::-;;;-1:-1:-1;;;;;19425:25:0;;:::o;24429:391::-;17745:11;;:16;17737:39;;;;;-1:-1:-1;;;17737:39:0;;;;;;;;;;;;-1:-1:-1;;;17737:39:0;;;;;;;;;;;;;;;17847:1;17833:11;:15;24554:10;24546:33;;;;;-1:-1:-1;;;24546:33:0;;;;;;;;;;;;-1:-1:-1;;;24546:33:0;;;;;;;;;;;;;;;24612:22;;-1:-1:-1;;;;;24612:22:0;24598:10;:36;24590:61;;;;;-1:-1:-1;;;24590:61:0;;;;;;;;;;;;-1:-1:-1;;;24590:61:0;;;;;;;;;;;;;;;24695:22;;24662:10;;:64;;-1:-1:-1;;;;;24662:10:0;;;;24695:22;24719:6;24662:64;:32;:64;:::i;:::-;24753:13;;:25;;24771:6;24753:25;:17;:25;:::i;:::-;24737:13;:41;24794:18;;;;;;;;;;;;;;;;;-1:-1:-1;17946:1:0;17932:11;:15;24429:391::o;25506:745::-;17745:11;;:16;17737:39;;;;;-1:-1:-1;;;17737:39:0;;;;;;;;;;;;-1:-1:-1;;;17737:39:0;;;;;;;;;;;;;;;17847:1;17833:11;:15;25655:10;25647:34;;;;;-1:-1:-1;;;25647:34:0;;;;;;;;;;;;-1:-1:-1;;;25647:34:0;;;;;;;;;;;;;;;25709:10;;-1:-1:-1;;;;;25700:19:0;;;25709:10;;25700:19;;25692:42;;;;;-1:-1:-1;;;25692:42:0;;;;;;;;;;;;-1:-1:-1;;;25692:42:0;;;;;;;;;;;;;;;25767:18;;25747:17;;-1:-1:-1;;;;;25767:18:0;:32;:61;;25810:18;;-1:-1:-1;;;;;25810:18:0;25767:61;;;25802:5;;-1:-1:-1;;;;;25802:5:0;25767:61;25747:81;-1:-1:-1;;;;;;25845:19:0;;25841:176;;25881:45;25908:6;25916:9;-1:-1:-1;;;;;25881:26:0;;;:45;;:26;:45;:::i;:::-;;25841:176;;;25959:46;-1:-1:-1;;;;;25959:27:0;;25987:9;25998:6;25959:46;:27;:46;:::i;:::-;26051:18;;-1:-1:-1;;;;;26051:18:0;:32;;:110;;-1:-1:-1;26113:18:0;;26150:10;;;26100:61;;;-1:-1:-1;;;26100:61:0;;-1:-1:-1;;;;;26100:61:0;;;;;;;;;;26150:10;;;26100:61;;;;;26113:18;;;;;26100:42;;:61;;;;;;;;;;;;;;26113:18;;26100:61;;;5:2:-1;;;;30:1;27;20:12;5:2;26100:61:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26100:61:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;26100:61:0;26051:110;26029:172;;;;;-1:-1:-1;;;26029:172:0;;;;;;;;;;;;-1:-1:-1;;;26029:172:0;;;;;;;;;;;;;;;26219:24;;;-1:-1:-1;;;;;26219:24:0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17946:1:0;17932:11;:15;-1:-1:-1;25506:745:0:o;26259:987::-;26352:20;26387;26422:23;26460:22;26497:18;26530;26563:21;26599:20;26669:10;;;;;;;;;-1:-1:-1;;;;;26669:10:0;-1:-1:-1;;;;;26663:27:0;;26699:4;26663:42;;;;;;;;;;;;;-1:-1:-1;;;;;26663:42:0;-1:-1:-1;;;;;26663:42:0;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26663:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26663:42:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;26663:42:0;26791:11;;26771:14;;26752:13;;26663:42;;-1:-1:-1;26734:69:0;;:52;;26771:14;26734:52;;26663:42;;26734:32;:17;:32;:::i;:::-;:36;:52;:36;:52;:::i;:69::-;26716:87;-1:-1:-1;26877:3:0;26836:38;26716:87;19243:2;26836:38;:19;:38;:::i;:::-;:44;;;;;;;-1:-1:-1;26950:3:0;26912:35;:15;19298:2;26912:35;:19;:35;:::i;:::-;:41;;;;;;;-1:-1:-1;26982:62:0;26912:41;26982:38;:15;27002:17;26982:38;:19;:38;:::i;:::-;:42;:62;:42;:62;:::i;:::-;26964:80;;27075:36;27097:13;;27075:17;:21;;:36;;;;:::i;:::-;27057:54;;27141:38;27164:14;;27141:18;:22;;:38;;;;:::i;:::-;27122:57;;27206:32;27226:11;;27206:15;:19;;:32;;;;:::i;:::-;27190:48;;26259:987;;;;;;;;:::o;19353:25::-;;;-1:-1:-1;;;;;19353:25:0;;:::o;8948:205::-;8447:12;;-1:-1:-1;;;;;8447:12:0;8433:10;:26;8425:51;;;;;-1:-1:-1;;;8425:51:0;;;;;;;;;;;;-1:-1:-1;;;8425:51:0;;;;;;;;;;;;;;;9065:12;;;9058:5;;9037:41;;-1:-1:-1;;;;;9065:12:0;;;;9058:5;;;;9037:41;;;9097:12;;;;9089:20;;-1:-1:-1;;;;;;9089:20:0;;;-1:-1:-1;;;;;9097:12:0;;9089:20;;;;9120:25;;;8948:205::o;23797:624::-;17745:11;;:16;17737:39;;;;;-1:-1:-1;;;17737:39:0;;;;;;;;;;;;-1:-1:-1;;;17737:39:0;;;;;;;;;;;;;;;17847:1;17833:11;:15;7360:5;;-1:-1:-1;;;;;7360:5:0;7346:10;:19;7338:44;;;;;-1:-1:-1;;;7338:44:0;;;;;;;;;;;;-1:-1:-1;;;7338:44:0;;;;;;;;;;;;;;;24039:22;;-1:-1:-1;;;;;24039:49:0;;;:22;;:49;;;:107;;-1:-1:-1;24105:18:0;;-1:-1:-1;;;;;24105:41:0;;;:18;;:41;;24039:107;:149;;;-1:-1:-1;24163:10:0;;-1:-1:-1;;;;;24163:25:0;;;:10;;:25;;24039:149;24017:213;;;;;-1:-1:-1;;;24017:213:0;;;;;;;;;;;;-1:-1:-1;;;24017:213:0;;;;;;;;;;;;;;;24241:22;:48;;-1:-1:-1;;;;;24241:48:0;;;-1:-1:-1;;;;;;24241:48:0;;;;;;;24300:18;:40;;;;;;;;;;;24351:10;:24;;;;;;;;;;;;;;;24393:20;;;24409:3;24393:20;;;;;;;;;;;;;-1:-1:-1;;17946:1:0;17932:11;:15;-1:-1:-1;23797:624:0:o;24828:670::-;17745:11;;:16;17737:39;;;;;-1:-1:-1;;;17737:39:0;;;;;;;;;;;;-1:-1:-1;;;17737:39:0;;;;;;;;;;;;;;;17847:1;17833:11;:15;24903:14;;24992:21;:19;:21::i;:::-;-1:-1:-1;25046:10:0;;24954:59;;-1:-1:-1;24954:59:0;;-1:-1:-1;25026:17:0;;-1:-1:-1;;;;;;25046:10:0;:24;;-1:-1:-1;25046:45:0;;-1:-1:-1;;;25046:45:0;25081:10;;-1:-1:-1;;;;;25081:10:0;25046:45;;;25073:5;;-1:-1:-1;;;;;25073:5:0;25046:45;25026:65;-1:-1:-1;25108:13:0;;25104:100;;25138:10;;:54;;-1:-1:-1;;;;;25138:10:0;25171:9;25182;25138:54;:32;:54;:::i;:::-;25220:14;;25216:114;;25273:10;;;25259:42;;;-1:-1:-1;;;25259:42:0;;;;;;;;;-1:-1:-1;;;;;25273:10:0;;;;25259:30;;:42;;;;;;;;;;;;;;25273:10;;25259:42;;;5:2:-1;;;;30:1;27;20:12;5:2;25259:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25259:42:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25259:42:0;25251:67;;;;;-1:-1:-1;;;25251:67:0;;;;;;;;;;;;-1:-1:-1;;;25251:67:0;;;;;;;;;;;;;;;25356:11;;:27;;25372:10;25356:27;:15;:27;:::i;:::-;25342:11;:41;25411:14;;:29;;25430:9;25411:29;:18;:29;:::i;:::-;25394:14;:46;25458:32;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17946:1:0;17932:11;:15;-1:-1:-1;24828:670:0:o;19252:48::-;19298:2;19252:48;:::o;7837:161::-;7360:5;;-1:-1:-1;;;;;7360:5:0;7346:10;:19;7338:44;;;;;-1:-1:-1;;;7338:44:0;;;;;;;;;;;;-1:-1:-1;;;7338:44:0;;;;;;;;;;;;;;;7958:1;7943:5;;7922:39;;-1:-1:-1;;;;;7943:5:0;;;;7922:39;;7958:1;;7922:39;7988:1;7972:18;;-1:-1:-1;;;;;;7972:18:0;;;7837:161::o;6898:20::-;;;-1:-1:-1;;;;;6898:20:0;;:::o;19309:37::-;;;-1:-1:-1;;;;;19309:37:0;;:::o;8266:27::-;;;-1:-1:-1;;;;;8266:27:0;;:::o;19385:33::-;;;-1:-1:-1;;;;;19385:33:0;;:::o;8639:229::-;7360:5;;-1:-1:-1;;;;;7360:5:0;7346:10;:19;7338:44;;;;;-1:-1:-1;;;7338:44:0;;;;;;;;;;;;-1:-1:-1;;;7338:44:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;8763:22:0;;;;;;:43;;-1:-1:-1;8801:5:0;;-1:-1:-1;;;;;8789:17:0;;;8801:5;;8789:17;;8763:43;8755:71;;;;;-1:-1:-1;;;8755:71:0;;;;;;;;;;;;-1:-1:-1;;;8755:71:0;;;;;;;;;;;;;;;8837:12;:23;;-1:-1:-1;;;;;;8837:23:0;-1:-1:-1;;;;;8837:23:0;;;;;;;;;;8639:229::o;19197:48::-;19243:2;19197:48;:::o;9960:278::-;10105:125;10153:5;10173:2;10190:5;10210:9;10105:33;:125::i;:::-;9960:278;;;:::o;15931:191::-;16067:5;;;16091:6;;;;16083:31;;;;;-1:-1:-1;;;16083:31:0;;;;;;;;;;;;-1:-1:-1;;;16083:31:0;;;;;;;;;;;;;;;15931:191;;;;:::o;4108:269::-;4254:12;4294:28;-1:-1:-1;;;;;4294:10:0;;4305:6;4313:8;4294:28;:10;:28;:::i;:::-;4284:38;;4341:7;4333:36;;;;;-1:-1:-1;;;4333:36:0;;;;;;;;;;;;-1:-1:-1;;;4333:36:0;;;;;;;;;;;;;;;4108:269;;;;;:::o;15517:205::-;15653:5;;;15677:6;;;:20;;;15696:1;15691;15687;:5;;;;;;:10;15677:20;15669:45;;;;;-1:-1:-1;;;15669:45:0;;;;;;;;;;;;-1:-1:-1;;;15669:45:0;;;;;;;;;;;;;;15730:193;15838:4;15873:1;15868;:6;;15860:32;;;;;-1:-1:-1;;;15860:32:0;;;;;;;;;;;;-1:-1:-1;;;15860:32:0;;;;;;;;;;;;;;;-1:-1:-1;15910:5:0;;;15730:193::o;10545:310::-;10751:52;10776:5;10783:2;10787:5;10794:8;10751:24;:52::i;:::-;10729:118;;;;;-1:-1:-1;;;10729:118:0;;;;;;;;;;;;-1:-1:-1;;;10729:118:0;;;;;;;;;;;;;;;10545:310;;;;:::o;3560:393::-;3697:12;3731:11;3727:55;;-1:-1:-1;3766:4:0;3759:11;;3727:55;3792:25;3820:14;:2;-1:-1:-1;;;;;3820:12:0;;:14::i;:::-;3899:46;;3792:42;;-1:-1:-1;;;;;;3899:14:0;;;3932:8;;3920:6;;3899:46;;;;3920:6;3899:14;3932:8;3899:46;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;3885:60:0;;3560:393;-1:-1:-1;;;;;;3560:393:0:o;10863:796::-;11441:103;;;-1:-1:-1;;;;;11441:103:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;11441:103:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;11574:34:0;;;;11040:4;;;;11574:10;;;11589:8;;11441:103;;11574:34;;;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;11574:34:0;;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;11555:53:0;;;11626:25;11643:7;11626:16;:25::i;:::-;11619:32;10863:796;-1:-1:-1;;;;;;;10863:796:0:o;3236:173::-;3395:4;3236:173::o;13643:1127::-;13753:4;14076:7;14072:666;;;14135:16;14290:61;;;;14468:2;14463:115;;;;14692:1;14681:12;;14128:584;;14290:61;14331:1;14320:12;;14290:61;;14463:115;14515:2;14512:1;14509;14494:24;14557:1;14551:8;14540:19;;14128:584;;14109:618;-1:-1:-1;14755:7:0;13643:1127::o

Swarm Source

bzzr://d6c666379e3205e991bbc18c9be175a4567af7fe2545e38a306418a201e40b3b

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

The Fee Vault for Loopring Protocol (both v1 and v2)

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
[ 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.