Contract 0xAbe12e3548fDb334D11fcc962c413d91Ef12233F

 
 
Txn Hash
Method
Block
From
To
Value
0xd739bd01a7151f3e6a8f12ac7830b7588a261e222dbea04db3af5caf3ccbcf83Register Token77776142019-05-17 11:54:291289 days 15 hrs agoVite: Deployer 1 IN  0xabe12e3548fdb334d11fcc962c413d91ef12233f0 Ether0.0012680111
0xe386a45c2ac260d0b7d029e0ea0ee50ac4a709fef69201af2e08981c72943993Unregister Token77775542019-05-17 11:43:291289 days 15 hrs agoVite: Deployer 1 IN  0xabe12e3548fdb334d11fcc962c413d91ef12233f0 Ether0.0007755824
0x1c303664144a514f97ac0840957a5b302742f5f9936a3b9b087103a95113c7f6Register Token72777382019-02-28 7:00:471367 days 19 hrs agoVite: Deployer 1 IN  0xabe12e3548fdb334d11fcc962c413d91ef12233f0 Ether0.0023067620
0x671877598abae7e6818e1b74a88ef6f6355331a94e22c998c66c4479bd076717Register Token72354092019-02-18 8:48:281377 days 18 hrs agoVite: Deployer 1 IN  0xabe12e3548fdb334d11fcc962c413d91ef12233f0 Ether0.001845416
0x49af36c05246235042c20081c682b71e3091b7bf475734ec6cf51cfd5fc28571Register Token71852862019-02-06 22:52:261389 days 4 hrs agoVite: Deployer 1 IN  0xabe12e3548fdb334d11fcc962c413d91ef12233f0 Ether0.001845416
0xd186ef59633591adbf322c922bef10a0a90caca25035d36861ed1f0248d73f9aRegister Token71126502019-01-23 7:02:001403 days 19 hrs agoVite: Deployer 1 IN  0xabe12e3548fdb334d11fcc962c413d91ef12233f0 Ether0.0018443816
0x7f61503a6cbc2d954af12b1e1c13c394a5ecf8b6c93ac1b4fcb220945e88769bRegister Token70864792019-01-18 9:44:111408 days 17 hrs agoVite: Deployer 1 IN  0xabe12e3548fdb334d11fcc962c413d91ef12233f0 Ether0.0018443816
0xde4d5152f6a81591a38ed3e7dd452ef9535426881fb198ad50986b31b4375a56Register Token70694562019-01-15 8:21:561411 days 18 hrs agoVite: Deployer 1 IN  0xabe12e3548fdb334d11fcc962c413d91ef12233f0 Ether0.001845416
0x32e86b43e5708207c4016f3ae56de808e07f01fc2ec16bbc18935987c8fb68adRegister Token68765892018-12-13 2:52:461445 days 2 mins agoVite: Deployer 1 IN  0xabe12e3548fdb334d11fcc962c413d91ef12233f0 Ether0.001845416
0xb1fe8ec6762306da34b4df51026b062abd49bf60cfef643fe0b4c72e45f418e8Register Token68765852018-12-13 2:51:461445 days 3 mins agoVite: Deployer 1 IN  0xabe12e3548fdb334d11fcc962c413d91ef12233f0 Ether0.001845416
0x2eb043b1c277e9ea2252a03faa94822ac734e5360d1cb50dd7a8dfc953b8fb87Register Token68412572018-12-07 7:05:151450 days 19 hrs agoVite: Deployer 1 IN  0xabe12e3548fdb334d11fcc962c413d91ef12233f0 Ether0.0018443816
0xd4af83a3cb35ec1188630c75724177a3acf6ca0983bedcbaabad2aca2c2dfb77Register Token66700872018-11-09 3:34:311478 days 23 hrs agoVite: Deployer 1 IN  0xabe12e3548fdb334d11fcc962c413d91ef12233f0 Ether0.001845416
0x941a9828598a442754712341d2a52dbab60fb45fcbe6a424232ae9528a1c048dRegister Token66271822018-11-02 2:37:441486 days 17 mins agoVite: Deployer 1 IN  0xabe12e3548fdb334d11fcc962c413d91ef12233f0 Ether0.0018443816
0xe63147e106d673c5e04384f58bf8a66b3c76df54dd7e123f23f753608fb2baafRegister Token66271792018-11-02 2:36:351486 days 19 mins agoVite: Deployer 1 IN  0xabe12e3548fdb334d11fcc962c413d91ef12233f0 Ether0.0018443816
0x5db6f17ccff41de39e5e2f4a6b61546b94f96cde913de7550096a6ff1aa6a785Register Token65855352018-10-26 6:44:411492 days 20 hrs agoVite: Deployer 1 IN  0xabe12e3548fdb334d11fcc962c413d91ef12233f0 Ether0.001845416
0x3236b56e25e570001b6af7875da551fb086055e7e192adc983a4b1bc730409a5Register Token65855122018-10-26 6:39:391492 days 20 hrs agoVite: Deployer 1 IN  0xabe12e3548fdb334d11fcc962c413d91ef12233f0 Ether0.0018443816
0x946bf2052658bcf9f85346f8c6c3b99a5a6ddb14e9562b5fc012c9275b1d9750Register Token65417192018-10-19 3:00:271499 days 23 hrs agoVite: Deployer 1 IN  0xabe12e3548fdb334d11fcc962c413d91ef12233f0 Ether0.001845416
0x73e148cdd413febdb285c8712e64bfa1b654e7395b1a3650fb9189ce32110b03Register Token65417042018-10-19 2:57:131499 days 23 hrs agoVite: Deployer 1 IN  0xabe12e3548fdb334d11fcc962c413d91ef12233f0 Ether0.0018443816
0x337f875ac8aa033b9ae3f4aa2c7da99c7bf14cc0b84980c88b14b04c8f4d62b0Register Token64996122018-10-12 6:15:271506 days 20 hrs agoVite: Deployer 1 IN  0xabe12e3548fdb334d11fcc962c413d91ef12233f0 Ether0.0018443816
0xdd481fdf0669556eccf37f567fd0c819e7224560aeb2d7f2fdcef1b70a71ca4bRegister Token64996082018-10-12 6:14:201506 days 20 hrs agoVite: Deployer 1 IN  0xabe12e3548fdb334d11fcc962c413d91ef12233f0 Ether0.001845416
0xc2c5b4bdd720850bc9f937f17e96d20f55110e8dd53b7ff3c09c05ec5e5f6b01Register Token64996062018-10-12 6:13:531506 days 20 hrs agoVite: Deployer 1 IN  0xabe12e3548fdb334d11fcc962c413d91ef12233f0 Ether0.0018423316
0x1e85724b7b19bf49b88a2e48a9d7a63fad170b0dc82db539d8dfd1c0fd472ca2Register Token64996012018-10-12 6:12:531506 days 20 hrs agoVite: Deployer 1 IN  0xabe12e3548fdb334d11fcc962c413d91ef12233f0 Ether0.001845416
0x0cd3547f025dbf5ab1143d7eecb2af343f86738cb958a649d2643aed8f325c56Unregister Token64995812018-10-12 6:09:291506 days 20 hrs agoVite: Deployer 1 IN  0xabe12e3548fdb334d11fcc962c413d91ef12233f0 Ether0.0004320816
0x51d9e180ef2047ed1a040d7233749c7f1443d069c55e9fbbb80eb5b574b859eaRegister Token64321082018-10-01 7:18:471517 days 19 hrs agoVite: Deployer 1 IN  0xabe12e3548fdb334d11fcc962c413d91ef12233f0 Ether0.001845416
0xb0193d1c3eb2fa9823e7896557b496be75abc76ca860458205c7dbeef5fd45d6Register Token64139062018-09-28 7:36:081520 days 19 hrs agoVite: Deployer 1 IN  0xabe12e3548fdb334d11fcc962c413d91ef12233f0 Ether0.0039193134
[ Download CSV Export 
View more zero value Internal Transactions in Advanced View mode
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TokenRegistryImpl

Compiler Version
v0.4.21+commit.dfe3193c

Optimization Enabled:
Yes with 200 runs

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

/*
  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.4.21;
/// @title Utility Functions for address
/// @author Daniel Wang - <[email protected]>
library AddressUtil {
    function isContract(
        address addr
        )
        internal
        view
        returns (bool)
    {
        if (addr == 0x0) {
            return false;
        } else {
            uint size;
            assembly { size := extcodesize(addr) }
            return size > 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.
*/
/*
  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
/// @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.
    function Ownable()
        public
    {
        owner = msg.sender;
    }
    /// @dev Throws if called by any account other than the owner.
    modifier onlyOwner()
    {
        require(msg.sender == owner);
        _;
    }
    /// @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
        )
        onlyOwner
        public
    {
        require(newOwner != 0x0);
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }
}
/// @title Claimable
/// @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);
        _;
    }
    /// @dev Allows the current owner to set the pendingOwner address.
    /// @param newOwner The address to transfer ownership to.
    function transferOwnership(
        address newOwner
        )
        onlyOwner
        public
    {
        require(newOwner != 0x0 && newOwner != owner);
        pendingOwner = newOwner;
    }
    /// @dev Allows the pendingOwner address to finalize the transfer.
    function claimOwnership()
        onlyPendingOwner
        public
    {
        emit OwnershipTransferred(owner, pendingOwner);
        owner = pendingOwner;
        pendingOwner = 0x0;
    }
}
/*
  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 Token Register Contract
/// @dev This contract maintains a list of tokens the Protocol supports.
/// @author Kongliang Zhong - <[email protected]>,
/// @author Daniel Wang - <[email protected]>.
contract TokenRegistry {
    event TokenRegistered(
        address indexed addr,
        string          symbol
    );
    event TokenUnregistered(
        address indexed addr,
        string          symbol
    );
    function registerToken(
        address addr,
        string  symbol
        )
        external;
    function unregisterToken(
        address addr,
        string  symbol
        )
        external;
    function areAllTokensRegistered(
        address[] addressList
        )
        external
        view
        returns (bool);
    function getAddressBySymbol(
        string symbol
        )
        external
        view
        returns (address);
    function isTokenRegisteredBySymbol(
        string symbol
        )
        public
        view
        returns (bool);
    function isTokenRegistered(
        address addr
        )
        public
        view
        returns (bool);
    function getTokens(
        uint start,
        uint count
        )
        public
        view
        returns (address[] addressList);
}
/// @title An Implementation of TokenRegistry.
/// @author Kongliang Zhong - <[email protected]>,
/// @author Daniel Wang - <[email protected]>.
contract TokenRegistryImpl is TokenRegistry, Claimable {
    using AddressUtil for address;
    address[] public addresses;
    mapping (address => TokenInfo) addressMap;
    mapping (string => address) symbolMap;
    struct TokenInfo {
        uint   pos;      // 0 mens unregistered; if > 0, pos + 1 is the
                         // token's position in `addresses`.
        string symbol;   // Symbol of the token
    }
    /// @dev Disable default function.
    function ()
        payable
        public
    {
        revert();
    }
    function registerToken(
        address addr,
        string  symbol
        )
        external
        onlyOwner
    {
        registerTokenInternal(addr, symbol);
    }
    function unregisterToken(
        address addr,
        string  symbol
        )
        external
        onlyOwner
    {
        require(addr != 0x0);
        require(symbolMap[symbol] == addr);
        delete symbolMap[symbol];
        uint pos = addressMap[addr].pos;
        require(pos != 0);
        delete addressMap[addr];
        // We will replace the token we need to unregister with the last token
        // Only the pos of the last token will need to be updated
        address lastToken = addresses[addresses.length - 1];
        // Don't do anything if the last token is the one we want to delete
        if (addr != lastToken) {
            // Swap with the last token and update the pos
            addresses[pos - 1] = lastToken;
            addressMap[lastToken].pos = pos;
        }
        addresses.length--;
        emit TokenUnregistered(addr, symbol);
    }
    function areAllTokensRegistered(
        address[] addressList
        )
        external
        view
        returns (bool)
    {
        for (uint i = 0; i < addressList.length; i++) {
            if (addressMap[addressList[i]].pos == 0) {
                return false;
            }
        }
        return true;
    }
    function getAddressBySymbol(
        string symbol
        )
        external
        view
        returns (address)
    {
        return symbolMap[symbol];
    }
    function isTokenRegisteredBySymbol(
        string symbol
        )
        public
        view
        returns (bool)
    {
        return symbolMap[symbol] != 0x0;
    }
    function isTokenRegistered(
        address addr
        )
        public
        view
        returns (bool)
    {
        return addressMap[addr].pos != 0;
    }
    function getTokens(
        uint start,
        uint count
        )
        public
        view
        returns (address[] addressList)
    {
        uint num = addresses.length;
        if (start >= num) {
            return;
        }
        uint end = start + count;
        if (end > num) {
            end = num;
        }
        addressList = new address[](end - start);
        for (uint i = start; i < end; i++) {
            addressList[i - start] = addresses[i];
        }
    }
    function registerTokenInternal(
        address addr,
        string  symbol
        )
        internal
    {
        require(0x0 != addr);
        require(bytes(symbol).length > 0);
        require(0x0 == symbolMap[symbol]);
        require(0 == addressMap[addr].pos);
        addresses.push(addr);
        symbolMap[symbol] = addr;
        addressMap[addr] = TokenInfo(addresses.length, symbol);
        emit TokenRegistered(addr, symbol);
    }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"addr","type":"address"},{"name":"symbol","type":"string"}],"name":"unregisterToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"symbol","type":"string"}],"name":"getAddressBySymbol","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"addressList","type":"address[]"}],"name":"areAllTokensRegistered","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"isTokenRegistered","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"start","type":"uint256"},{"name":"count","type":"uint256"}],"name":"getTokens","outputs":[{"name":"addressList","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"claimOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"},{"name":"symbol","type":"string"}],"name":"registerToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"pendingOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"addresses","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"},{"constant":true,"inputs":[{"name":"symbol","type":"string"}],"name":"isTokenRegisteredBySymbol","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"symbol","type":"string"}],"name":"TokenRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"symbol","type":"string"}],"name":"TokenUnregistered","type":"event"}]

606060405260008054600160a060020a033316600160a060020a0319909116179055610c45806100306000396000f3006060604052600436106100b95763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630b03ad1181146100be5780631605dd61146100eb57806316066e691461012557806326aa101f14610157578063494cfc6c146101765780634e71e0c8146101e25780638da5cb5b146101f5578063d4fbeb1914610208578063e30c397814610233578063edf26d9b14610246578063f2fde38b1461025c578063fcd458071461027b575b600080fd5b34156100c957600080fd5b6100e960048035600160a060020a031690602480359081019101356102cc565b005b34156100f657600080fd5b61010960048035602481019101356104d5565b604051600160a060020a03909116815260200160405180910390f35b341561013057600080fd5b610143600480356024810191013561050e565b604051901515815260200160405180910390f35b341561016257600080fd5b610143600160a060020a0360043516610583565b341561018157600080fd5b61018f6004356024356105a0565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156101ce5780820151838201526020016101b6565b505050509050019250505060405180910390f35b34156101ed57600080fd5b6100e9610653565b341561020057600080fd5b6101096106e1565b341561021357600080fd5b6100e960048035600160a060020a031690602480359081019101356106f0565b341561023e57600080fd5b610109610749565b341561025157600080fd5b610109600435610758565b341561026757600080fd5b6100e9600160a060020a0360043516610780565b341561028657600080fd5b61014360046024813581810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496506107fb95505050505050565b60008054819033600160a060020a039081169116146102ea57600080fd5b600160a060020a03851615156102ff57600080fd5b84600160a060020a0316600485856040518083838082843782019150509250505090815260200160405190819003902054600160a060020a03161461034357600080fd5b6004848460405180838380828437820191505092505050908152602001604051908190039020805473ffffffffffffffffffffffffffffffffffffffff19169055600160a060020a03851660009081526003602052604090205491508115156103ab57600080fd5b600160a060020a0385166000908152600360205260408120818155906103d46001830182610b01565b50506002805460001981019081106103e857fe5b600091825260209091200154600160a060020a03908116915085168114610463578060026001840381548110151561041c57fe5b6000918252602080832091909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0394851617905591831681526003909152604090208290555b6002805490610476906000198301610b48565b5084600160a060020a03167fee98311a96660ce4ab10cd82053f767653901305ec8acf91ec60311de919e28a85856040516020808252810182905280604081018484808284378201915050935050505060405180910390a25050505050565b6000600483836040518083838082843782019150509250505090815260200160405190819003902054600160a060020a03169392505050565b6000805b82811015610577576003600085858481811061052a57fe5b90506020020135600160a060020a0316600160a060020a0316600160a060020a03168152602001908152602001600020600001546000141561056f576000915061057c565b600101610512565b600191505b5092915050565b600160a060020a0316600090815260036020526040902054151590565b6105a8610b6c565b6002546000808286106105ba5761064a565b8486019150828211156105cb578291505b8582036040518059106105db5750595b908082528060200260200182016040525093508590505b8181101561064a57600280548290811061060857fe5b600091825260209091200154600160a060020a0316848783038151811061062b57fe5b600160a060020a039092166020928302909101909101526001016105f2565b50505092915050565b60015433600160a060020a0390811691161461066e57600080fd5b600154600054600160a060020a0391821691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b600054600160a060020a031681565b60005433600160a060020a0390811691161461070b57600080fd5b6107448383838080601f016020809104026020016040519081016040528181529291906020840183838082843750610875945050505050565b505050565b600154600160a060020a031681565b600280548290811061076657fe5b600091825260209091200154600160a060020a0316905081565b60005433600160a060020a0390811691161461079b57600080fd5b600160a060020a038116158015906107c15750600054600160a060020a03828116911614155b15156107cc57600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60006004826040518082805190602001908083835b6020831061082f5780518252601f199092019160209182019101610810565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405190819003902054600160a060020a0316151592915050565b600160a060020a038216151561088a57600080fd5b600081511161089857600080fd5b6004816040518082805190602001908083835b602083106108ca5780518252601f1990920191602091820191016108ab565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405190819003902054600160a060020a03161561091257600080fd5b600160a060020a0382166000908152600360205260409020541561093557600080fd5b60028054600181016109478382610b48565b506000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038416179055816004826040518082805190602001908083835b602083106109ac5780518252601f19909201916020918201910161098d565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051908190039020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039290921691909117905560408051908101604090815260025482526020808301849052600160a060020a038516600090815260039091522081518155602082015181600101908051610a57929160200190610b7e565b5090505081600160a060020a03167faaed15520cc86e95b7c2522d968096283afbef7858bdf194b2f60d28a1a8d63e8260405160208082528190810183818151815260200191508051906020019080838360005b83811015610ac3578082015183820152602001610aab565b50505050905090810190601f168015610af05780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b50805460018160011615610100020316600290046000825580601f10610b275750610b45565b601f016020900490600052602060002090810190610b459190610bfc565b50565b81548183558181151161074457600083815260209020610744918101908301610bfc565b60206040519081016040526000815290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610bbf57805160ff1916838001178555610bec565b82800160010185558215610bec579182015b82811115610bec578251825591602001919060010190610bd1565b50610bf8929150610bfc565b5090565b610c1691905b80821115610bf85760008155600101610c02565b905600a165627a7a7230582049459737ed48bb6251b3538bf99c735e06ef83846f0811bf946d43fc3ea1c48c0029

Swarm Source

bzzr://49459737ed48bb6251b3538bf99c735e06ef83846f0811bf946d43fc3ea1c48c
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.

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.