Contract 0xad3eb5b1a9a5729f08c0a623c8eeacfb43fb6b54 2

 

Contract Overview

Treasureland: Registry
Balance:
0 BNB

BNB Value:
$0.00

Token:
 
Txn Hash
Block
From
To
Value [Txn Fee]
0x566113bdd493b31374c1a6b7259f5616fac7264ee34950cdbb4a4e84c7f508fe97605362021-08-05 5:12:371 min ago0x2439f7719b8510d79e09f15685e5014d89ae3828 IN  Treasureland: Registry0 BNB0.001923695
0x57e05f28fe72b676b8f25258ba7bef2574d317a1f86d9314fd2c1d0b56e98d6a97604182021-08-05 5:06:437 mins ago0xc506a14ffc6dc5b55a8d7d0cca78c90b8bbd5ea1 IN  Treasureland: Registry0 BNB0.001923695
0x0a1cd33fa74e5ff17ac027d2556a4bb9da2159805e2eadaddfb6984dd2742de897603742021-08-05 5:04:319 mins ago0x1c49754a8fd072ea1ed7520a7fb07d07e4db8d18 IN  Treasureland: Registry0 BNB0.001923695
0xd0b1d988cd6fe38c2677019a406cc69466708d72596d86ae16175f613abfc15597603072021-08-05 5:00:5712 mins ago0x247a40cba130654fd2257332aa5dd3c1c9c346f0 IN  Treasureland: Registry0 BNB0.001923695
0x9707775b5ccf40445b5d4513be8115b8946917bcaa15a19f44994b9b90a1463097602792021-08-05 4:59:3314 mins ago0xd358cd6f31effc411cf81291c45b1d1de4db3e9e IN  Treasureland: Registry0 BNB0.001923695
0x91fa4f4364a6bd47916b27638dff03cbc9b7aa13c18ddc017cda2554193c6d6497602312021-08-05 4:57:0916 mins ago0xde04a1c4736d7bb7295ca2014ec551fea012aa89 IN  Treasureland: Registry0 BNB0.001923695
0xa6eb0b71e333453a7fd44a465966065c0f14c271f9917d9ed3652d2be1508c9797598302021-08-05 4:36:5037 mins ago0xb4e1718c1a82515b2ad50d5e6d4aec64aedcf178 IN  Treasureland: Registry0 BNB0.001923695
0xa4e1551f6196acd44d10e18cb4eb0d88e4b30d997a9186442d05fab064526b3097597722021-08-05 4:33:2640 mins ago0xcc69e168dea47a3d186c31130e7014d0eb0b1f97 IN  Treasureland: Registry0 BNB0.001923695
0x07d4b768cf6b02edfa146b76d787a43c34c52eec2f0685d0f2b9270877f0b15497597712021-08-05 4:33:2340 mins ago0x7fd704d7d14f0172e27e4ed03435d85d54b4d45d IN  Treasureland: Registry0 BNB0.001923695
0x1d0936dc9abb6e31809f82752cb0d354802c55670f584936086707f7f153b1c497597072021-08-05 4:29:5643 mins ago0x38c0242e6c4d6a646d91af1012bbcf27eaaea0da IN  Treasureland: Registry0 BNB0.001923695
0xfd9546b7d7c31b20dab49a10266811466e26928c23cf4e5345e750bf3fdab2d497596792021-08-05 4:28:2345 mins ago0xa28f8500d905afaea9fa09212093a8410292b6b5 IN  Treasureland: Registry0 BNB0.001923695
0xd6e445116df07d33a75af56051a521d8418051bec14900db214b8ef5ab899fca97595342021-08-05 4:21:0752 mins ago0xf0eff742d427a0c69a79abe8557f2a035037505d IN  Treasureland: Registry0 BNB0.001923695
0x5efc66bdc8bc070e19759b180982e422a10476fc23b23ba5bb7de8304de6956797595222021-08-05 4:20:3153 mins ago0x4f0c8963e3fcdd6e64429c898cff7239fe9aef85 IN  Treasureland: Registry0 BNB0.001923695
0xfb00883f4b91d451d4187e1e7ba3f8ac4661b7df2df9b99971167d9496d691c197594202021-08-05 4:15:2558 mins ago0x3b87e4586af4b5fa4d3a80908cec2cdb17917bd5 IN  Treasureland: Registry0 BNB0.001923695
0x208d2d6d0b723eec39891800296656fab61e5aa0d8f9f51c0ee5c909bc6c720997593352021-08-05 4:11:101 hr 2 mins ago0x1e2466d1913b914741577c75be2844b1a6164417 IN  Treasureland: Registry0 BNB0.001923695
0xc55eb34ded48c2525db31798fedb614d5d4e0358f0e3f761c4cfe84694e493a697591742021-08-05 4:02:211 hr 11 mins ago0x3533c8ece98bdeae2fa2eff7f98dbf0e4a99050b IN  Treasureland: Registry0 BNB0.001923695
0xc60496c05944d62ab5a0c77afb404d8d13ac6fb38c23d477cc75cbeb7206e06597591422021-08-05 4:00:381 hr 13 mins ago0x097501c95264ad3204159efaefdc5820783dbeae IN  Treasureland: Registry0 BNB0.001923695
0xefe7ec50f1f98530fcdc089c7b7748d500734bf2f1338a40dd1675aa5524da7897590662021-08-05 3:56:501 hr 17 mins ago0x5ca92a1ffdcd8672d855fb3e1be3ca0d7466958b IN  Treasureland: Registry0 BNB0.001923695
0x25296514320a4586cc7987338c58fd24ec2ebc5a0619ca252ccd496c49514ca397589182021-08-05 3:49:141 hr 24 mins ago0x83ba35c568715d3de5c31c06a50c78f46387bb53 IN  Treasureland: Registry0 BNB0.001923695
0x99a03a231f7ba54efd9ace57ad4606184dc18ae953564f9b0ae64113d4d7fd6397589022021-08-05 3:48:261 hr 25 mins ago0x7bcce947714c9fc1cd7d301345275026f63d85f0 IN  Treasureland: Registry0 BNB0.002308434
0x270ddc0daf312f9b043bb604db67b5647dd1a1ab3211ac046de1ceb8e6c7e3ba97588822021-08-05 3:47:261 hr 26 mins ago0x1ef9a28c2f33b8297a5a687e49f3feaf14c8a461 IN  Treasureland: Registry0 BNB0.001923695
0x2ac6ef6405bf3da93e245483938c2f3e4e6aadf72a83e123a1b96c7df2f1c52897586792021-08-05 3:37:161 hr 36 mins ago0xbf7668020e22da49850009d9d5f5faa066e87966 IN  Treasureland: Registry0 BNB0.001923695
0x715b5bc143b2e6f76f2c0613c7d561b63b33f3ae2317f921edc77d3785eaf6ef97585992021-08-05 3:32:571 hr 40 mins ago0xfcfcb9bd8040f0941a3ee08ad6ef75ec3f9d87e1 IN  Treasureland: Registry0 BNB0.001923695
0xb2483794aa3ae0218d4fbd5e4dfdaa0ca72a1e2f9faa40b19f3ceb8c2f94403f97582972021-08-05 3:17:341 hr 56 mins ago0x4b25818bfdbb5c56dae26beb5c94fa95084a060c IN  Treasureland: Registry0 BNB0.001923695
0xf020c26063d785866ba561ab59f61c46dd90cc9d5da7eb2752f6823a218e6e7197581912021-08-05 3:11:392 hrs 2 mins ago0x49abf5f05b40c3e4397021d4ce6247053c729486 IN  Treasureland: Registry0 BNB0.001923695
[ Download CSV Export 

OVERVIEW

For user management

Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x57e05f28fe72b676b8f25258ba7bef2574d317a1f86d9314fd2c1d0b56e98d6a97604182021-08-05 5:06:437 mins ago Treasureland: Registry  Contract Creation0 BNB
0x0a1cd33fa74e5ff17ac027d2556a4bb9da2159805e2eadaddfb6984dd2742de897603742021-08-05 5:04:319 mins ago Treasureland: Registry  Contract Creation0 BNB
0xd0b1d988cd6fe38c2677019a406cc69466708d72596d86ae16175f613abfc15597603072021-08-05 5:00:5712 mins ago Treasureland: Registry  Contract Creation0 BNB
0x9707775b5ccf40445b5d4513be8115b8946917bcaa15a19f44994b9b90a1463097602792021-08-05 4:59:3314 mins ago Treasureland: Registry  Contract Creation0 BNB
0x91fa4f4364a6bd47916b27638dff03cbc9b7aa13c18ddc017cda2554193c6d6497602312021-08-05 4:57:0916 mins ago Treasureland: Registry  Contract Creation0 BNB
0xa6eb0b71e333453a7fd44a465966065c0f14c271f9917d9ed3652d2be1508c9797598302021-08-05 4:36:5037 mins ago Treasureland: Registry  Contract Creation0 BNB
0xa4e1551f6196acd44d10e18cb4eb0d88e4b30d997a9186442d05fab064526b3097597722021-08-05 4:33:2640 mins ago Treasureland: Registry  Contract Creation0 BNB
0x07d4b768cf6b02edfa146b76d787a43c34c52eec2f0685d0f2b9270877f0b15497597712021-08-05 4:33:2340 mins ago Treasureland: Registry  Contract Creation0 BNB
0x1d0936dc9abb6e31809f82752cb0d354802c55670f584936086707f7f153b1c497597072021-08-05 4:29:5643 mins ago Treasureland: Registry  Contract Creation0 BNB
0xfd9546b7d7c31b20dab49a10266811466e26928c23cf4e5345e750bf3fdab2d497596792021-08-05 4:28:2345 mins ago Treasureland: Registry  Contract Creation0 BNB
0xd6e445116df07d33a75af56051a521d8418051bec14900db214b8ef5ab899fca97595342021-08-05 4:21:0752 mins ago Treasureland: Registry  Contract Creation0 BNB
0x5efc66bdc8bc070e19759b180982e422a10476fc23b23ba5bb7de8304de6956797595222021-08-05 4:20:3153 mins ago Treasureland: Registry  Contract Creation0 BNB
0xfb00883f4b91d451d4187e1e7ba3f8ac4661b7df2df9b99971167d9496d691c197594202021-08-05 4:15:2558 mins ago Treasureland: Registry  Contract Creation0 BNB
0x208d2d6d0b723eec39891800296656fab61e5aa0d8f9f51c0ee5c909bc6c720997593352021-08-05 4:11:101 hr 2 mins ago Treasureland: Registry  Contract Creation0 BNB
0xc55eb34ded48c2525db31798fedb614d5d4e0358f0e3f761c4cfe84694e493a697591742021-08-05 4:02:211 hr 11 mins ago Treasureland: Registry  Contract Creation0 BNB
0xc60496c05944d62ab5a0c77afb404d8d13ac6fb38c23d477cc75cbeb7206e06597591422021-08-05 4:00:381 hr 13 mins ago Treasureland: Registry  Contract Creation0 BNB
0xefe7ec50f1f98530fcdc089c7b7748d500734bf2f1338a40dd1675aa5524da7897590662021-08-05 3:56:501 hr 17 mins ago Treasureland: Registry  Contract Creation0 BNB
0x25296514320a4586cc7987338c58fd24ec2ebc5a0619ca252ccd496c49514ca397589182021-08-05 3:49:141 hr 24 mins ago Treasureland: Registry  Contract Creation0 BNB
0x99a03a231f7ba54efd9ace57ad4606184dc18ae953564f9b0ae64113d4d7fd6397589022021-08-05 3:48:261 hr 25 mins ago Treasureland: Registry  Contract Creation0 BNB
0x270ddc0daf312f9b043bb604db67b5647dd1a1ab3211ac046de1ceb8e6c7e3ba97588822021-08-05 3:47:261 hr 26 mins ago Treasureland: Registry  Contract Creation0 BNB
0x2ac6ef6405bf3da93e245483938c2f3e4e6aadf72a83e123a1b96c7df2f1c52897586792021-08-05 3:37:161 hr 36 mins ago Treasureland: Registry  Contract Creation0 BNB
0x715b5bc143b2e6f76f2c0613c7d561b63b33f3ae2317f921edc77d3785eaf6ef97585992021-08-05 3:32:571 hr 40 mins ago Treasureland: Registry  Contract Creation0 BNB
0xb2483794aa3ae0218d4fbd5e4dfdaa0ca72a1e2f9faa40b19f3ceb8c2f94403f97582972021-08-05 3:17:341 hr 56 mins ago Treasureland: Registry  Contract Creation0 BNB
0xf020c26063d785866ba561ab59f61c46dd90cc9d5da7eb2752f6823a218e6e7197581912021-08-05 3:11:392 hrs 2 mins ago Treasureland: Registry  Contract Creation0 BNB
0xc3760b9f6d2bd1856325f96ebe141005a80705a9d5d43dffb93f817c2b8e2f2f97581832021-08-05 3:11:112 hrs 2 mins ago Treasureland: Registry  Contract Creation0 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TreasureLandRegistry

Compiler Version
v0.4.26+commit.4563c3fc

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-04-10
*/

/***
 *    ██████╗ ███████╗ ██████╗  ██████╗ 
 *    ██╔══██╗██╔════╝██╔════╝ ██╔═══██╗
 *    ██║  ██║█████╗  ██║  ███╗██║   ██║
 *    ██║  ██║██╔══╝  ██║   ██║██║   ██║
 *    ██████╔╝███████╗╚██████╔╝╚██████╔╝
 *    ╚═════╝ ╚══════╝ ╚═════╝  ╚═════╝ 
 *    
 * https://dego.finance
                                  
* MIT License
* ===========
*
* Copyright (c) 2021 dego
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
*/

pragma solidity ^0.4.13;

contract Ownable {
  address public owner;


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


  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  constructor() 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) public onlyOwner {
    require(newOwner != address(0));
    emit OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }

  /**
   * @dev Allows the current owner to relinquish control of the contract.
   */
  function renounceOwnership() public onlyOwner {
    emit OwnershipRenounced(owner);
    owner = address(0);
  }
}

contract ERC20Basic {
  function totalSupply() public view returns (uint256);
  function balanceOf(address who) public view returns (uint256);
  function transfer(address to, uint256 value) public returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
}

contract ERC20 is ERC20Basic {
  function allowance(address owner, address spender)
    public view returns (uint256);

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

  function approve(address spender, uint256 value) public returns (bool);
  event Approval(
    address indexed owner,
    address indexed spender,
    uint256 value
  );
}

contract TokenRecipient {
    event ReceivedEther(address indexed sender, uint amount);
    event ReceivedTokens(address indexed from, uint256 value, address indexed token, bytes extraData);

    /**
     * @dev Receive tokens and generate a log event
     * @param from Address from which to transfer tokens
     * @param value Amount of tokens to transfer
     * @param token Address of token
     * @param extraData Additional data to log
     */
    function receiveApproval(address from, uint256 value, address token, bytes extraData) public {
        ERC20 t = ERC20(token);
        require(t.transferFrom(from, this, value));
        emit ReceivedTokens(from, value, token, extraData);
    }

    /**
     * @dev Receive Ether and generate a log event
     */
    function () payable public {
        emit ReceivedEther(msg.sender, msg.value);
    }
}

contract ProxyRegistry is Ownable {

    /* DelegateProxy implementation contract. Must be initialized. */
    address public delegateProxyImplementation;

    /* Authenticated proxies by user. */
    mapping(address => OwnableDelegateProxy) public proxies;

    /* Contracts pending access. */
    mapping(address => uint) public pending;

    /* Contracts allowed to call those proxies. */
    mapping(address => bool) public contracts;

    /* Delay period for adding an authenticated contract.
       This mitigates a particular class of potential attack on the TreasureLand DAO (which owns this registry) - if at any point the value of assets held by proxy contracts exceeded the value of half the TreasureLand supply (votes in the offline DAO),
       a malicious but rational attacker could buy half the TreasureLand and grant themselves access to all the proxy contracts. A delay period renders this attack nonthreatening - given two weeks, if that happened, users would have
       plenty of time to notice and transfer their assets.
    */
    uint public DELAY_PERIOD = 2 weeks;

    /**
     * Start the process to enable access for specified contract. Subject to delay period.
     *
     * @dev ProxyRegistry owner only
     * @param addr Address to which to grant permissions
     */
    function startGrantAuthentication (address addr)
        public
        onlyOwner
    {
        require(!contracts[addr] && pending[addr] == 0);
        pending[addr] = now;
    }

    /**
     * End the process to nable access for specified contract after delay period has passed.
     *
     * @dev ProxyRegistry owner only
     * @param addr Address to which to grant permissions
     */
    function endGrantAuthentication (address addr)
        public
        onlyOwner
    {
        require(!contracts[addr] && pending[addr] != 0 && ((pending[addr] + DELAY_PERIOD) < now));
        pending[addr] = 0;
        contracts[addr] = true;
    }

    /**
     * Revoke access for specified contract. Can be done instantly.
     *
     * @dev ProxyRegistry owner only
     * @param addr Address of which to revoke permissions
     */    
    function revokeAuthentication (address addr)
        public
        onlyOwner
    {
        contracts[addr] = false;
    }

    /**
     * Register a proxy contract with this registry
     *
     * @dev Must be called by the user which the proxy is for, creates a new AuthenticatedProxy
     * @return New AuthenticatedProxy contract
     */
    function registerProxy()
        public
        returns (OwnableDelegateProxy proxy)
    {
        require(proxies[msg.sender] == address(0));
        proxy = new OwnableDelegateProxy(msg.sender, delegateProxyImplementation, abi.encodeWithSignature("initialize(address,address)", msg.sender, address(this)));
        proxies[msg.sender] = proxy;
        return proxy;
    }

}

contract TreasureLandRegistry is ProxyRegistry {

    string public constant name = "Project TreasureLand Proxy Registry";

    /* Whether the initial auth address has been set. */
    bool public initialAddressSet = false;

    constructor ()
        public
    {
        delegateProxyImplementation = new AuthenticatedProxy();
    }

    /** 
     * Grant authentication to the initial Exchange protocol contract
     *
     * @dev No delay, can only be called once - after that the standard registry process with a delay must be used
     * @param authAddress Address of the contract to grant authentication
     */
    function grantInitialAuthentication (address authAddress)
        onlyOwner
        public
    {
        require(!initialAddressSet);
        initialAddressSet = true;
        contracts[authAddress] = true;
    }

}

contract OwnedUpgradeabilityStorage {

  // Current implementation
  address internal _implementation;

  // Owner of the contract
  address private _upgradeabilityOwner;

  /**
   * @dev Tells the address of the owner
   * @return the address of the owner
   */
  function upgradeabilityOwner() public view returns (address) {
    return _upgradeabilityOwner;
  }

  /**
   * @dev Sets the address of the owner
   */
  function setUpgradeabilityOwner(address newUpgradeabilityOwner) internal {
    _upgradeabilityOwner = newUpgradeabilityOwner;
  }

  /**
  * @dev Tells the address of the current implementation
  * @return address of the current implementation
  */
  function implementation() public view returns (address) {
    return _implementation;
  }

  /**
  * @dev Tells the proxy type (EIP 897)
  * @return Proxy type, 2 for forwarding proxy
  */
  function proxyType() public pure returns (uint256 proxyTypeId) {
    return 2;
  }
}

contract AuthenticatedProxy is TokenRecipient, OwnedUpgradeabilityStorage {

    /* Whether initialized. */
    bool initialized = false;

    /* Address which owns this proxy. */
    address public user;

    /* Associated registry with contract authentication information. */
    ProxyRegistry public registry;

    /* Whether access has been revoked. */
    bool public revoked;

    /* Delegate call could be used to atomically transfer multiple assets owned by the proxy contract with one order. */
    enum HowToCall { Call, DelegateCall }

    /* Event fired when the proxy access is revoked or unrevoked. */
    event Revoked(bool revoked);

    /**
     * Initialize an AuthenticatedProxy
     *
     * @param addrUser Address of user on whose behalf this proxy will act
     * @param addrRegistry Address of ProxyRegistry contract which will manage this proxy
     */
    function initialize (address addrUser, ProxyRegistry addrRegistry)
        public
    {
        require(!initialized);
        initialized = true;
        user = addrUser;
        registry = addrRegistry;
    }

    /**
     * Set the revoked flag (allows a user to revoke ProxyRegistry access)
     *
     * @dev Can be called by the user only
     * @param revoke Whether or not to revoke access
     */
    function setRevoke(bool revoke)
        public
    {
        require(msg.sender == user);
        revoked = revoke;
        emit Revoked(revoke);
    }

    /**
     * Execute a message call from the proxy contract
     *
     * @dev Can be called by the user, or by a contract authorized by the registry as long as the user has not revoked access
     * @param dest Address to which the call will be sent
     * @param howToCall Which kind of call to make
     * @param calldata Calldata to send
     * @return Result of the call (success or failure)
     */
    function proxy(address dest, HowToCall howToCall, bytes calldata)
        public
        returns (bool result)
    {
        require(msg.sender == user || (!revoked && registry.contracts(msg.sender)));
        if (howToCall == HowToCall.Call) {
            result = dest.call(calldata);
        } else if (howToCall == HowToCall.DelegateCall) {
            result = dest.delegatecall(calldata);
        }
        return result;
    }

    /**
     * Execute a message call and assert success
     * 
     * @dev Same functionality as `proxy`, just asserts the return value
     * @param dest Address to which the call will be sent
     * @param howToCall What kind of call to make
     * @param calldata Calldata to send
     */
    function proxyAssert(address dest, HowToCall howToCall, bytes calldata)
        public
    {
        require(proxy(dest, howToCall, calldata));
    }

}

contract Proxy {

  /**
  * @dev Tells the address of the implementation where every call will be delegated.
  * @return address of the implementation to which it will be delegated
  */
  function implementation() public view returns (address);

  /**
  * @dev Tells the type of proxy (EIP 897)
  * @return Type of proxy, 2 for upgradeable proxy
  */
  function proxyType() public pure returns (uint256 proxyTypeId);

  /**
  * @dev Fallback function allowing to perform a delegatecall to the given implementation.
  * This function will return whatever the implementation call returns
  */
  function () payable public {
    address _impl = implementation();
    require(_impl != address(0));

    assembly {
      let ptr := mload(0x40)
      calldatacopy(ptr, 0, calldatasize)
      let result := delegatecall(gas, _impl, ptr, calldatasize, 0, 0)
      let size := returndatasize
      returndatacopy(ptr, 0, size)

      switch result
      case 0 { revert(ptr, size) }
      default { return(ptr, size) }
    }
  }
}

contract OwnedUpgradeabilityProxy is Proxy, OwnedUpgradeabilityStorage {
  /**
  * @dev Event to show ownership has been transferred
  * @param previousOwner representing the address of the previous owner
  * @param newOwner representing the address of the new owner
  */
  event ProxyOwnershipTransferred(address previousOwner, address newOwner);

  /**
  * @dev This event will be emitted every time the implementation gets upgraded
  * @param implementation representing the address of the upgraded implementation
  */
  event Upgraded(address indexed implementation);

  /**
  * @dev Upgrades the implementation address
  * @param implementation representing the address of the new implementation to be set
  */
  function _upgradeTo(address implementation) internal {
    require(_implementation != implementation);
    _implementation = implementation;
    emit Upgraded(implementation);
  }

  /**
  * @dev Throws if called by any account other than the owner.
  */
  modifier onlyProxyOwner() {
    require(msg.sender == proxyOwner());
    _;
  }

  /**
   * @dev Tells the address of the proxy owner
   * @return the address of the proxy owner
   */
  function proxyOwner() public view returns (address) {
    return upgradeabilityOwner();
  }

  /**
   * @dev Allows the current owner to transfer control of the contract to a newOwner.
   * @param newOwner The address to transfer ownership to.
   */
  function transferProxyOwnership(address newOwner) public onlyProxyOwner {
    require(newOwner != address(0));
    emit ProxyOwnershipTransferred(proxyOwner(), newOwner);
    setUpgradeabilityOwner(newOwner);
  }

  /**
   * @dev Allows the upgradeability owner to upgrade the current implementation of the proxy.
   * @param implementation representing the address of the new implementation to be set.
   */
  function upgradeTo(address implementation) public onlyProxyOwner {
    _upgradeTo(implementation);
  }

  /**
   * @dev Allows the upgradeability owner to upgrade the current implementation of the proxy
   * and delegatecall the new implementation for initialization.
   * @param implementation representing the address of the new implementation to be set.
   * @param data represents the msg.data to bet sent in the low level call. This parameter may include the function
   * signature of the implementation to be called with the needed payload
   */
  function upgradeToAndCall(address implementation, bytes data) payable public onlyProxyOwner {
    upgradeTo(implementation);
    require(address(this).delegatecall(data));
  }
}

contract OwnableDelegateProxy is OwnedUpgradeabilityProxy {

    constructor(address owner, address initialImplementation, bytes calldata)
        public
    {
        setUpgradeabilityOwner(owner);
        _upgradeTo(initialImplementation);
        require(initialImplementation.delegatecall(calldata));
    }

}

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"initialAddressSet","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"endGrantAuthentication","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"revokeAuthentication","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"pending","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"contracts","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","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":"delegateProxyImplementation","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"proxies","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"startGrantAuthentication","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"registerProxy","outputs":[{"name":"proxy","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"DELAY_PERIOD","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"authAddress","type":"address"}],"name":"grantInitialAuthentication","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

6080604052621275006005556006805460ff1916905534801561002157600080fd5b5060008054600160a060020a0319163317905561003c61007e565b604051809103906000f080158015610058573d6000803e3d6000fd5b5060018054600160a060020a031916600160a060020a039290921691909117905561008e565b60405161083d80610ef583390190565b610e588061009d6000396000f3006080604052600436106100da5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146100df5780631a86ac4f1461016957806338b6e4071461019257806353376d1f146101b55780635eebea20146101d657806369dc9ff314610209578063715018a61461022a5780638da5cb5b1461023f57806397204d8e14610270578063c455279114610285578063d4e8e063146102a6578063ddd81f82146102c7578063e71a02e1146102dc578063ef7f3834146102f1578063f2fde38b14610312575b600080fd5b3480156100eb57600080fd5b506100f4610333565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012e578181015183820152602001610116565b50505050905090810190601f16801561015b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561017557600080fd5b5061017e610393565b604080519115158252519081900360200190f35b34801561019e57600080fd5b506101b3600160a060020a036004351661039c565b005b3480156101c157600080fd5b506101b3600160a060020a0360043516610457565b3480156101e257600080fd5b506101f7600160a060020a036004351661048f565b60408051918252519081900360200190f35b34801561021557600080fd5b5061017e600160a060020a03600435166104a1565b34801561023657600080fd5b506101b36104b6565b34801561024b57600080fd5b50610254610522565b60408051600160a060020a039092168252519081900360200190f35b34801561027c57600080fd5b50610254610531565b34801561029157600080fd5b50610254600160a060020a0360043516610540565b3480156102b257600080fd5b506101b3600160a060020a036004351661055b565b3480156102d357600080fd5b506102546105d8565b3480156102e857600080fd5b506101f7610777565b3480156102fd57600080fd5b506101b3600160a060020a036004351661077d565b34801561031e57600080fd5b506101b3600160a060020a03600435166107d9565b606060405190810160405280602381526020017f50726f6a6563742054726561737572654c616e642050726f787920526567697381526020017f747279000000000000000000000000000000000000000000000000000000000081525081565b60065460ff1681565b600054600160a060020a031633146103b357600080fd5b600160a060020a03811660009081526004602052604090205460ff161580156103f35750600160a060020a03811660009081526003602052604090205415155b801561041b5750600554600160a060020a038216600090815260036020526040902054429101105b151561042657600080fd5b600160a060020a0316600090815260036020908152604080832083905560049091529020805460ff19166001179055565b600054600160a060020a0316331461046e57600080fd5b600160a060020a03166000908152600460205260409020805460ff19169055565b60036020526000908152604090205481565b60046020526000908152604090205460ff1681565b600054600160a060020a031633146104cd57600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600054600160a060020a031681565b600154600160a060020a031681565b600260205260009081526040902054600160a060020a031681565b600054600160a060020a0316331461057257600080fd5b600160a060020a03811660009081526004602052604090205460ff161580156105b15750600160a060020a038116600090815260036020526040902054155b15156105bc57600080fd5b600160a060020a03166000908152600360205260409020429055565b33600090815260026020526040812054600160a060020a0316156105fb57600080fd5b600154604080513360248201819052306044808401919091528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc955000000000000000000000000000000000000000000000000000000001790529091600160a060020a03169061068261086d565b8084600160a060020a0316600160a060020a0316815260200183600160a060020a0316600160a060020a0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156106ec5781810151838201526020016106d4565b50505050905090810190601f1680156107195780820380516001836020036101000a031916815260200191505b50945050505050604051809103906000f08015801561073c573d6000803e3d6000fd5b50336000908152600260205260409020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038316179055919050565b60055481565b600054600160a060020a0316331461079457600080fd5b60065460ff16156107a457600080fd5b6006805460ff199081166001908117909255600160a060020a0390921660009081526004602052604090208054909216179055565b600054600160a060020a031633146107f057600080fd5b600160a060020a038116151561080557600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6040516105af8061087e833901905600608060405234801561001057600080fd5b506040516105af3803806105af8339810160409081528151602083015191830151909201610046836401000000006100e0810204565b61005882640100000000610102810204565b81600160a060020a03168160405180828051906020019080838360005b8381101561008d578181015183820152602001610075565b50505050905090810190601f1680156100ba5780820380516001836020036101000a031916815260200191505b50915050600060405180830381855af491505015156100d857600080fd5b505050610165565b60018054600160a060020a031916600160a060020a0392909216919091179055565b600054600160a060020a038281169116141561011d57600080fd5b60008054600160a060020a031916600160a060020a038316908117825560405190917fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b91a250565b61043b806101746000396000f3006080604052600436106100825763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663025313a281146100c85780633659cfe6146100f95780634555d5c91461011c5780634f1ef286146101435780635c60da1b1461019d5780636fde8202146101b2578063f1739cae146101c7575b600061008c6101e8565b9050600160a060020a03811615156100a357600080fd5b60405136600082376000803683855af43d806000843e8180156100c4578184f35b8184fd5b3480156100d457600080fd5b506100dd6101f7565b60408051600160a060020a039092168252519081900360200190f35b34801561010557600080fd5b5061011a600160a060020a0360043516610206565b005b34801561012857600080fd5b5061013161022e565b60408051918252519081900360200190f35b60408051602060046024803582810135601f810185900485028601850190965285855261011a958335600160a060020a03169536956044949193909101919081908401838280828437509497506102339650505050505050565b3480156101a957600080fd5b506100dd6101e8565b3480156101be57600080fd5b506100dd6102dc565b3480156101d357600080fd5b5061011a600160a060020a03600435166102eb565b600054600160a060020a031690565b60006102016102dc565b905090565b61020e6101f7565b600160a060020a0316331461022257600080fd5b61022b81610370565b50565b600290565b61023b6101f7565b600160a060020a0316331461024f57600080fd5b61025882610206565b30600160a060020a03168160405180828051906020019080838360005b8381101561028d578181015183820152602001610275565b50505050905090810190601f1680156102ba5780820380516001836020036101000a031916815260200191505b50915050600060405180830381855af491505015156102d857600080fd5b5050565b600154600160a060020a031690565b6102f36101f7565b600160a060020a0316331461030757600080fd5b600160a060020a038116151561031c57600080fd5b7f5a3e66efaa1e445ebd894728a69d6959842ea1e97bd79b892797106e270efcd96103456101f7565b60408051600160a060020a03928316815291841660208301528051918290030190a161022b816103e0565b600054600160a060020a038281169116141561038b57600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038316908117825560405190917fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b91a250565b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600a165627a7a7230582059fc55cfaf164f93f1c5765d63517d381e7cc742776b65bc61fcd7aef41af50d0029a165627a7a72305820d32274e5076dd3cf550cb76e9849bc26922694ad27c7a6a996e8e8e541977a66002960806040526001805460a060020a60ff021916905534801561002057600080fd5b5061080d806100306000396000f3006080604052600436106100ae5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631b0f7ba981146100e65780633f801f91146101665780634555d5c9146101d4578063485cc955146101fb5780634c93505f146102225780634f8632ba1461023c5780635c60da1b1461026d57806363d256ce146102825780636fde8202146102975780637b103999146102ac5780638f4ffcb1146102c1575b60408051348152905133917fa419615bc8fda4c87663805ee2a3597a6d71c1d476911d9892f340d965bc7bf1919081900360200190a2005b3480156100f257600080fd5b50604080516020600460443581810135601f8101849004840285018401909552848452610152948235600160a060020a0316946024803560ff16953695946064949201919081908401838280828437509497506103319650505050505050565b604080519115158252519081900360200190f35b34801561017257600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526101d2948235600160a060020a0316946024803560ff169536959460649492019190819084018382808284375094975061051f9650505050505050565b005b3480156101e057600080fd5b506101e961053a565b60408051918252519081900360200190f35b34801561020757600080fd5b506101d2600160a060020a036004358116906024351661053f565b34801561022e57600080fd5b506101d260043515156105b5565b34801561024857600080fd5b50610251610630565b60408051600160a060020a039092168252519081900360200190f35b34801561027957600080fd5b5061025161063f565b34801561028e57600080fd5b5061015261064e565b3480156102a357600080fd5b5061025161065e565b3480156102b857600080fd5b5061025161066d565b3480156102cd57600080fd5b50604080516020601f6064356004818101359283018490048402850184019095528184526101d294600160a060020a0381358116956024803596604435909316953695608494920191819084018382808284375094975061067c9650505050505050565b600254600090600160a060020a03163314806103f0575060035460a060020a900460ff161580156103f05750600354604080517f69dc9ff30000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a03909216916369dc9ff3916024808201926020929091908290030181600087803b1580156103c357600080fd5b505af11580156103d7573d6000803e3d6000fd5b505050506040513d60208110156103ed57600080fd5b50515b15156103fb57600080fd5b600083600181111561040957fe5b141561048d5783600160a060020a03168260405180828051906020019080838360005b8381101561044457818101518382015260200161042c565b50505050905090810190601f1680156104715780820380516001836020036101000a031916815260200191505b509150506000604051808303816000865af19150509050610518565b600183600181111561049b57fe5b14156105185783600160a060020a03168260405180828051906020019080838360005b838110156104d65781810151838201526020016104be565b50505050905090810190601f1680156105035780820380516001836020036101000a031916815260200191505b50915050600060405180830381855af4925050505b9392505050565b61052a838383610331565b151561053557600080fd5b505050565b600290565b60015460a060020a900460ff161561055657600080fd5b6001805474ff0000000000000000000000000000000000000000191660a060020a17905560028054600160a060020a0393841673ffffffffffffffffffffffffffffffffffffffff199182161790915560038054929093169116179055565b600254600160a060020a031633146105cc57600080fd5b6003805482151560a060020a810274ff0000000000000000000000000000000000000000199092169190911790915560408051918252517f2165014523a6f4135deffed62d70149aad59b64de5aac51e3abbcbe2a83e2f7e9181900360200190a150565b600254600160a060020a031681565b600054600160a060020a031690565b60035460a060020a900460ff1681565b600154600160a060020a031690565b600354600160a060020a031681565b604080517f23b872dd000000000000000000000000000000000000000000000000000000008152600160a060020a03868116600483015230602483015260448201869052915184928316916323b872dd9160648083019260209291908290030181600087803b1580156106ee57600080fd5b505af1158015610702573d6000803e3d6000fd5b505050506040513d602081101561071857600080fd5b5051151561072557600080fd5b82600160a060020a031685600160a060020a03167fd65b48fd35864b3528d38e44760be5553248f89bf3ff6b06cca57817cc2650bf86856040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561079f578181015183820152602001610787565b50505050905090810190601f1680156107cc5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a350505050505600a165627a7a72305820d5dbe47df8e910390a732ea1eb36e7f2430b7f54474c60d36b92a6237358ac2b0029

Deployed ByteCode Sourcemap

7470:866:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7526:67;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7526:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7526:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7660:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7660:37:0;;;;;;;;;;;;;;;;;;;;;;6261:256;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6261:256:0;-1:-1:-1;;;;;6261:256:0;;;;;;;6721:127;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6721:127:0;-1:-1:-1;;;;;6721:127:0;;;;;4830:39;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4830:39:0;-1:-1:-1;;;;;4830:39:0;;;;;;;;;;;;;;;;;;;;;4930:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4930:41:0;-1:-1:-1;;;;;4930:41:0;;;;;2816:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2816:114:0;;;;1853:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1853:20:0;;;;;;;;-1:-1:-1;;;;;1853:20:0;;;;;;;;;;;;;;4636:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4636:42:0;;;;4729:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4729:55:0;-1:-1:-1;;;;;4729:55:0;;;;;5852:185;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5852:185:0;-1:-1:-1;;;;;5852:185:0;;;;;7080:381;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7080:381:0;;;;5595:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5595:34:0;;;;8112:219;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8112:219:0;-1:-1:-1;;;;;8112:219:0;;;;;2543:178;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2543:178:0;-1:-1:-1;;;;;2543:178:0;;;;;7526:67;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7660:37::-;;;;;;:::o;6261:256::-;2356:5;;-1:-1:-1;;;;;2356:5:0;2342:10;:19;2334:28;;;;;;-1:-1:-1;;;;;6368:15:0;;;;;;:9;:15;;;;;;;;6367:16;:38;;;;-1:-1:-1;;;;;;6387:13:0;;;;;;:7;:13;;;;;;:18;;6367:38;:80;;;;-1:-1:-1;6427:12:0;;-1:-1:-1;;;;;6411:13:0;;;;;;:7;:13;;;;;;6443:3;6411:28;;6410:36;6367:80;6359:89;;;;;;;;-1:-1:-1;;;;;6459:13:0;6475:1;6459:13;;;:7;:13;;;;;;;;:17;;;6487:9;:15;;;;;:22;;-1:-1:-1;;6487:22:0;6505:4;6487:22;;;6261:256::o;6721:127::-;2356:5;;-1:-1:-1;;;;;2356:5:0;2342:10;:19;2334:28;;;;;;-1:-1:-1;;;;;6817:15:0;6835:5;6817:15;;;:9;:15;;;;;:23;;-1:-1:-1;;6817:23:0;;;6721:127::o;4830:39::-;;;;;;;;;;;;;:::o;4930:41::-;;;;;;;;;;;;;;;:::o;2816:114::-;2356:5;;-1:-1:-1;;;;;2356:5:0;2342:10;:19;2334:28;;;;;;2893:5;;;2874:25;;-1:-1:-1;;;;;2893:5:0;;;;2874:25;;;2922:1;2906:18;;-1:-1:-1;;2906:18:0;;;2816:114::o;1853:20::-;;;-1:-1:-1;;;;;1853:20:0;;:::o;4636:42::-;;;-1:-1:-1;;;;;4636:42:0;;:::o;4729:55::-;;;;;;;;;;;;-1:-1:-1;;;;;4729:55:0;;:::o;5852:185::-;2356:5;;-1:-1:-1;;;;;2356:5:0;2342:10;:19;2334:28;;;;;;-1:-1:-1;;;;;5961:15:0;;;;;;:9;:15;;;;;;;;5960:16;:38;;;;-1:-1:-1;;;;;;5980:13:0;;;;;;:7;:13;;;;;;:18;5960:38;5952:47;;;;;;;;-1:-1:-1;;;;;6010:13:0;;;;;:7;:13;;;;;6026:3;6010:19;;5852:185::o;7080:381::-;7199:10;7139:26;7191:19;;;:7;:19;;;;;;-1:-1:-1;;;;;7191:19:0;:33;7183:42;;;;;;7281:27;;7310:81;;;7269:10;7310:81;;;;;;7385:4;7310:81;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;7310:81:0;;;;;;;;25:18:-1;;61:17;;7310:81:0;182:15:-1;7310:81:0;179:29:-1;160:49;;7269:10:0;;-1:-1:-1;;;;;7281:27:0;;7244:148;;:::i;:::-;;;-1:-1:-1;;;;;7244:148:0;-1:-1:-1;;;;;7244:148:0;;;;;;-1:-1:-1;;;;;7244:148:0;-1:-1:-1;;;;;7244:148:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7244:148:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;7411:10:0;7403:19;;;;:7;:19;;;;;:27;;-1:-1:-1;;7403:27:0;-1:-1:-1;;;;;7403:27:0;;;;;;7080:381;-1:-1:-1;7080:381:0:o;5595:34::-;;;;:::o;8112:219::-;2356:5;;-1:-1:-1;;;;;2356:5:0;2342:10;:19;2334:28;;;;;;8230:17;;;;8229:18;8221:27;;;;;;8259:17;:24;;-1:-1:-1;;8259:24:0;;;8279:4;8259:24;;;;;;-1:-1:-1;;;;;8294:22:0;;;8259:17;8294:22;;;:9;:22;;;;;:29;;;;;;;;8112:219::o;2543:178::-;2356:5;;-1:-1:-1;;;;;2356:5:0;2342:10;:19;2334:28;;;;;;-1:-1:-1;;;;;2620:22:0;;;;2612:31;;;;;;2676:5;;;2655:37;;-1:-1:-1;;;;;2655:37:0;;;;2676:5;;;2655:37;;;2699:5;:16;;-1:-1:-1;;2699:16:0;-1:-1:-1;;;;;2699:16:0;;;;;;;;;;2543:178::o;7470:866::-;;;;;;;;;;:::o

Swarm Source

bzzr://d5dbe47df8e910390a732ea1eb36e7f2430b7f54474c60d36b92a6237358ac2b
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
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.