ETH Price: $3,260.63 (-0.54%)
 

Overview

ETH Balance

1.093549 ETH

Eth Value

$3,565.66 (@ $3,260.63/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer80212682019-06-24 14:29:562040 days ago1561386596IN
Hydro: ERC20 Proxy
0.944049 ETH0.0017142840
Transfer80095522019-06-22 18:36:452041 days ago1561228605IN
Hydro: ERC20 Proxy
0.001 ETH0.000289286.75
Transfer79768282019-06-17 15:52:102047 days ago1560786730IN
Hydro: ERC20 Proxy
0.037 ETH0.0004285710
0xe1a8cba778215842019-05-24 9:33:452071 days ago1558690425IN
Hydro: ERC20 Proxy
0 ETH0.000151695
0xe1a8cba778215772019-05-24 9:32:062071 days ago1558690326IN
Hydro: ERC20 Proxy
0.1 ETH0.000226695
Transfer74671402019-03-30 2:31:532126 days ago1553913113IN
Hydro: ERC20 Proxy
0.0015 ETH0.000295716.90000025
Transfer73051172019-03-04 20:43:492151 days ago1551732229IN
Hydro: ERC20 Proxy
0.1 ETH0.000246
Transfer71444502019-01-29 15:06:042186 days ago1548774364IN
Hydro: ERC20 Proxy
0.01 ETH0.000299997
Transfer Ownersh...69197902018-12-20 8:40:302226 days ago1545295230IN
Hydro: ERC20 Proxy
0 ETH0.000242888
Add Address68852932018-12-14 13:26:042232 days ago1544793964IN
Hydro: ERC20 Proxy
0 ETH0.0008503510

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Proxy

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 1000000 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-12-14
*/

/*

    Copyright 2018 The Hydro Protocol 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.4.24;

/// @dev Math operations with safety checks that revert on error
library SafeMath {

    /// @dev Multiplies two numbers, reverts on overflow.
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "MUL_ERROR");

        return c;
    }

    /// @dev Integer division of two numbers truncating the quotient, reverts on division by zero.
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "DIVIDING_ERROR");
        uint256 c = a / b;
        return c;
    }

    /// @dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SUB_ERROR");
        uint256 c = a - b;
        return c;
    }

    /// @dev Adds two numbers, reverts on overflow.
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "ADD_ERROR");
        return c;
    }

    /// @dev Divides two numbers and returns the remainder (unsigned integer modulo), reverts when dividing by zero.
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0, "MOD_ERROR");
        return a % b;
    }
}

/// @title Ownable
/// @dev The Ownable contract has an owner address, and provides basic authorization control
/// functions, this simplifies the implementation of "user permissions".
contract LibOwnable {
    address private _owner;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    /// @dev The Ownable constructor sets the original `owner` of the contract to the sender account.
    constructor() internal {
        _owner = msg.sender;
        emit OwnershipTransferred(address(0), _owner);
    }

    /// @return the address of the owner.
    function owner() public view returns(address) {
        return _owner;
    }

    /// @dev Throws if called by any account other than the owner.
    modifier onlyOwner() {
        require(isOwner(), "NOT_OWNER");
        _;
    }

    /// @return true if `msg.sender` is the owner of the contract.
    function isOwner() public view returns(bool) {
        return msg.sender == _owner;
    }

    /// @dev Allows the current owner to relinquish control of the contract.
    /// @notice Renouncing to ownership will leave the contract without an owner.
    /// It will not be possible to call the functions with the `onlyOwner`
    /// modifier anymore.
    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /// @dev Allows the current owner to transfer control of the contract to a newOwner.
    /// @param newOwner The address to transfer ownership to.
    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0), "INVALID_OWNER");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract LibWhitelist is LibOwnable {
    mapping (address => bool) public whitelist;
    address[] public allAddresses;

    event AddressAdded(address indexed adr);
    event AddressRemoved(address indexed adr);

    /// @dev Only address in whitelist can invoke functions with this modifier.
    modifier onlyAddressInWhitelist {
        require(whitelist[msg.sender], "SENDER_NOT_IN_WHITELIST_ERROR");
        _;
    }

    /// @dev add Address into whitelist
    /// @param adr Address to add
    function addAddress(address adr) external onlyOwner {
        emit AddressAdded(adr);
        whitelist[adr] = true;
        allAddresses.push(adr);
    }

    /// @dev remove Address from whitelist
    /// @param adr Address to remove
    function removeAddress(address adr) external onlyOwner {
        emit AddressRemoved(adr);
        delete whitelist[adr];
        for(uint i = 0; i < allAddresses.length; i++){
            if(allAddresses[i] == adr) {
                allAddresses[i] = allAddresses[allAddresses.length - 1];
                allAddresses.length -= 1;
                break;
            }
        }
    }

    /// @dev Get all addresses in whitelist
    function getAllAddresses() external view returns (address[] memory) {
        return allAddresses;
    }
}

contract Proxy is LibWhitelist {
    using SafeMath for uint256;

    mapping( address => uint256 ) public balances;

    event Deposit(address owner, uint256 amount);
    event Withdraw(address owner, uint256 amount);
    event Transfer(address indexed from, address indexed to, uint256 value);

    function depositEther() public payable {
        balances[msg.sender] = balances[msg.sender].add(msg.value);
        emit Deposit(msg.sender, msg.value);
    }

    function withdrawEther(uint256 amount) public {
        balances[msg.sender] = balances[msg.sender].sub(amount);
        msg.sender.transfer(amount);
        emit Withdraw(msg.sender, amount);
    }

    function () public payable {
        depositEther();
    }

    /// @dev Invoking transferFrom.
    /// @param token Address of token to transfer.
    /// @param from Address to transfer token from.
    /// @param to Address to transfer token to.
    /// @param value Amount of token to transfer.
    function transferFrom(address token, address from, address to, uint256 value)
        external
        onlyAddressInWhitelist
    {
        if (token == address(0)) {
            transferEther(from, to, value);
        } else {
            transferToken(token, from, to, value);
        }
    }

    function transferEther(address from, address to, uint256 value)
        internal
        onlyAddressInWhitelist
    {
        balances[from] = balances[from].sub(value);
        balances[to] = balances[to].add(value);

        emit Transfer(from, to, value);
    }

    /// @dev Calls into ERC20 Token contract, invoking transferFrom.
    /// @param token Address of token to transfer.
    /// @param from Address to transfer token from.
    /// @param to Address to transfer token to.
    /// @param value Amount of token to transfer.
    function transferToken(address token, address from, address to, uint256 value)
        internal
        onlyAddressInWhitelist
    {
        assembly {

            // keccak256('transferFrom(address,address,uint256)') & 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000
            mstore(0, 0x23b872dd00000000000000000000000000000000000000000000000000000000)

            // calldatacopy(t, f, s) copy s bytes from calldata at position f to mem at position t
            // copy from, to, value from calldata to memory
            calldatacopy(4, 36, 96)

            // call ERC20 Token contract transferFrom function
            let result := call(gas, token, 0, 0, 100, 0, 32)

            // Some ERC20 Token contract doesn't return any value when calling the transferFrom function successfully.
            // So we consider the transferFrom call is successful in either case below.
            //   1. call successfully and nothing return.
            //   2. call successfully, return value is 32 bytes long and the value isn't equal to zero.
            switch eq(result, 1)
            case 1 {
                switch or(eq(returndatasize, 0), and(eq(returndatasize, 32), gt(mload(0), 0)))
                case 1 {
                    return(0, 0)
                }
            }
        }

        revert("TOKEN_TRANSFER_FROM_ERROR");
    }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balances","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"adr","type":"address"}],"name":"addAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"withdrawEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"adr","type":"address"}],"name":"removeAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getAllAddresses","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"depositEther","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"allAddresses","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"owner","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"owner","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"adr","type":"address"}],"name":"AddressAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"adr","type":"address"}],"name":"AddressRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

6080604081905260008054600160a060020a0319163317808255600160a060020a0316917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3611013806100576000396000f3006080604052600436106100c45763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166315dacbea81146100ce57806327e235e31461010b57806338eada1c1461014b5780633bed33ce146101795780634ba79dfe14610191578063715018a6146101bf5780638da5cb5b146101d45780638f32d59b146102125780639516a1041461023b57806398ea5fca146100c45780639b19251a146102a0578063dacc5370146102ce578063f2fde38b146102e6575b6100cc610314565b005b3480156100da57600080fd5b506100cc73ffffffffffffffffffffffffffffffffffffffff60043581169060243581169060443516606435610387565b34801561011757600080fd5b5061013973ffffffffffffffffffffffffffffffffffffffff60043516610446565b60408051918252519081900360200190f35b34801561015757600080fd5b506100cc73ffffffffffffffffffffffffffffffffffffffff60043516610458565b34801561018557600080fd5b506100cc6004356105b5565b34801561019d57600080fd5b506100cc73ffffffffffffffffffffffffffffffffffffffff60043516610652565b3480156101cb57600080fd5b506100cc6108a3565b3480156101e057600080fd5b506101e9610987565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561021e57600080fd5b506102276109a4565b604080519115158252519081900360200190f35b34801561024757600080fd5b506102506109c2565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561028c578181015183820152602001610274565b505050509050019250505060405180910390f35b3480156102ac57600080fd5b5061022773ffffffffffffffffffffffffffffffffffffffff60043516610a31565b3480156102da57600080fd5b506101e9600435610a46565b3480156102f257600080fd5b506100cc73ffffffffffffffffffffffffffffffffffffffff60043516610a7b565b33600090815260036020526040902054610334903463ffffffff610c0116565b33600081815260036020908152604091829020939093558051918252349282019290925281517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c929181900390910190a1565b3360009081526001602052604090205460ff16151561040757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f53454e4445525f4e4f545f494e5f57484954454c4953545f4552524f52000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff841615156104345761042f838383610c7c565b610440565b61044084848484610ddd565b50505050565b60036020526000908152604090205481565b6104606109a4565b15156104cd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e45520000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60405173ffffffffffffffffffffffffffffffffffffffff8216907fa226db3f664042183ee0281230bba26cbf7b5057e50aee7f25a175ff45ce4d7f90600090a273ffffffffffffffffffffffffffffffffffffffff166000818152600160208190526040822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016821790556002805491820181559091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169091179055565b336000908152600360205260409020546105d5908263ffffffff610f2716565b33600081815260036020526040808220939093559151909183156108fc02918491818181858888f19350505050158015610613573d6000803e3d6000fd5b50604080513381526020810183905281517f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364929181900390910190a150565b600061065c6109a4565b15156106c957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e45520000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60405173ffffffffffffffffffffffffffffffffffffffff8316907f24a12366c02e13fe4a9e03d86a8952e85bb74a456c16e4a18b6d8295700b74bb90600090a25073ffffffffffffffffffffffffffffffffffffffff8116600090815260016020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b60025481101561089f578173ffffffffffffffffffffffffffffffffffffffff1660028281548110151561078757fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16141561089757600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81019081106107df57fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff909216918390811061081257fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906108919082610fa0565b5061089f565b600101610757565b5050565b6108ab6109a4565b151561091857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e45520000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff165b90565b60005473ffffffffffffffffffffffffffffffffffffffff16331490565b60606002805480602002602001604051908101604052809291908181526020018280548015610a2757602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116109fc575b5050505050905090565b60016020526000908152604090205460ff1681565b6002805482908110610a5457fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b610a836109a4565b1515610af057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e45520000000000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81161515610b7457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f494e56414c49445f4f574e455200000000000000000000000000000000000000604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600082820183811015610c7557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4144445f4552524f520000000000000000000000000000000000000000000000604482015290519081900360640190fd5b9392505050565b3360009081526001602052604090205460ff161515610cfc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f53454e4445525f4e4f545f494e5f57484954454c4953545f4552524f52000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040902054610d32908263ffffffff610f2716565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600360205260408082209390935590841681522054610d74908263ffffffff610c0116565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526003602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b3360009081526001602052604090205460ff161515610e5d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f53454e4445525f4e4f545f494e5f57484954454c4953545f4552524f52000000604482015290519081900360640190fd5b7f23b872dd0000000000000000000000000000000000000000000000000000000060005260606024600437602060006064600080885af16001811460018114610ea557610ebe565b600080511160203d141660003d1417600181146100cc57505b5050604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f544f4b454e5f5452414e534645525f46524f4d5f4552524f5200000000000000604482015290519081900360640190fd5b60008083831115610f9957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f5355425f4552524f520000000000000000000000000000000000000000000000604482015290519081900360640190fd5b5050900390565b815481835581811115610fc457600083815260209020610fc4918101908301610fc9565b505050565b6109a191905b80821115610fe35760008155600101610fcf565b50905600a165627a7a72305820024f94543de0a4535c4c61d4ff3640ab40030e4a818d024007afe002fe3ae9a70029

Deployed Bytecode

0x6080604052600436106100c45763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166315dacbea81146100ce57806327e235e31461010b57806338eada1c1461014b5780633bed33ce146101795780634ba79dfe14610191578063715018a6146101bf5780638da5cb5b146101d45780638f32d59b146102125780639516a1041461023b57806398ea5fca146100c45780639b19251a146102a0578063dacc5370146102ce578063f2fde38b146102e6575b6100cc610314565b005b3480156100da57600080fd5b506100cc73ffffffffffffffffffffffffffffffffffffffff60043581169060243581169060443516606435610387565b34801561011757600080fd5b5061013973ffffffffffffffffffffffffffffffffffffffff60043516610446565b60408051918252519081900360200190f35b34801561015757600080fd5b506100cc73ffffffffffffffffffffffffffffffffffffffff60043516610458565b34801561018557600080fd5b506100cc6004356105b5565b34801561019d57600080fd5b506100cc73ffffffffffffffffffffffffffffffffffffffff60043516610652565b3480156101cb57600080fd5b506100cc6108a3565b3480156101e057600080fd5b506101e9610987565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561021e57600080fd5b506102276109a4565b604080519115158252519081900360200190f35b34801561024757600080fd5b506102506109c2565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561028c578181015183820152602001610274565b505050509050019250505060405180910390f35b3480156102ac57600080fd5b5061022773ffffffffffffffffffffffffffffffffffffffff60043516610a31565b3480156102da57600080fd5b506101e9600435610a46565b3480156102f257600080fd5b506100cc73ffffffffffffffffffffffffffffffffffffffff60043516610a7b565b33600090815260036020526040902054610334903463ffffffff610c0116565b33600081815260036020908152604091829020939093558051918252349282019290925281517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c929181900390910190a1565b3360009081526001602052604090205460ff16151561040757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f53454e4445525f4e4f545f494e5f57484954454c4953545f4552524f52000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff841615156104345761042f838383610c7c565b610440565b61044084848484610ddd565b50505050565b60036020526000908152604090205481565b6104606109a4565b15156104cd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e45520000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60405173ffffffffffffffffffffffffffffffffffffffff8216907fa226db3f664042183ee0281230bba26cbf7b5057e50aee7f25a175ff45ce4d7f90600090a273ffffffffffffffffffffffffffffffffffffffff166000818152600160208190526040822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016821790556002805491820181559091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169091179055565b336000908152600360205260409020546105d5908263ffffffff610f2716565b33600081815260036020526040808220939093559151909183156108fc02918491818181858888f19350505050158015610613573d6000803e3d6000fd5b50604080513381526020810183905281517f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364929181900390910190a150565b600061065c6109a4565b15156106c957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e45520000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60405173ffffffffffffffffffffffffffffffffffffffff8316907f24a12366c02e13fe4a9e03d86a8952e85bb74a456c16e4a18b6d8295700b74bb90600090a25073ffffffffffffffffffffffffffffffffffffffff8116600090815260016020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b60025481101561089f578173ffffffffffffffffffffffffffffffffffffffff1660028281548110151561078757fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16141561089757600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81019081106107df57fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff909216918390811061081257fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906108919082610fa0565b5061089f565b600101610757565b5050565b6108ab6109a4565b151561091857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e45520000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff165b90565b60005473ffffffffffffffffffffffffffffffffffffffff16331490565b60606002805480602002602001604051908101604052809291908181526020018280548015610a2757602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116109fc575b5050505050905090565b60016020526000908152604090205460ff1681565b6002805482908110610a5457fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b610a836109a4565b1515610af057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e45520000000000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81161515610b7457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f494e56414c49445f4f574e455200000000000000000000000000000000000000604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600082820183811015610c7557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4144445f4552524f520000000000000000000000000000000000000000000000604482015290519081900360640190fd5b9392505050565b3360009081526001602052604090205460ff161515610cfc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f53454e4445525f4e4f545f494e5f57484954454c4953545f4552524f52000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040902054610d32908263ffffffff610f2716565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600360205260408082209390935590841681522054610d74908263ffffffff610c0116565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526003602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b3360009081526001602052604090205460ff161515610e5d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f53454e4445525f4e4f545f494e5f57484954454c4953545f4552524f52000000604482015290519081900360640190fd5b7f23b872dd0000000000000000000000000000000000000000000000000000000060005260606024600437602060006064600080885af16001811460018114610ea557610ebe565b600080511160203d141660003d1417600181146100cc57505b5050604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f544f4b454e5f5452414e534645525f46524f4d5f4552524f5200000000000000604482015290519081900360640190fd5b60008083831115610f9957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f5355425f4552524f520000000000000000000000000000000000000000000000604482015290519081900360640190fd5b5050900390565b815481835581811115610fc457600083815260209020610fc4918101908301610fc9565b505050565b6109a191905b80821115610fe35760008155600101610fcf565b50905600a165627a7a72305820024f94543de0a4535c4c61d4ff3640ab40030e4a818d024007afe002fe3ae9a70029

Swarm Source

bzzr://024f94543de0a4535c4c61d4ff3640ab40030e4a818d024007afe002fe3ae9a7

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.