ETH Price: $3,106.40 (+0.27%)
Gas: 3 Gwei

Contract

0xAaa1f5FC9617195B5Aa7FD1bD989D47f9E8D3f82
 

Overview

ETH Balance

83.546478239794800663 ETH

Eth Value

$259,528.47 (@ $3,106.40/ETH)
Transaction Hash
Method
Block
From
To
Value
Exit191440932024-02-02 23:50:59159 days ago1706917859IN
ElasticDAO: Proxy
0 ETH0.0031518212
Exit191224002024-01-30 22:47:59162 days ago1706654879IN
ElasticDAO: Proxy
0 ETH0.0055953921.30346523
Exit191155582024-01-29 23:49:47163 days ago1706572187IN
ElasticDAO: Proxy
0 ETH0.0030045611.43935554
Exit181469662023-09-16 6:33:59299 days ago1694846039IN
ElasticDAO: Proxy
0 ETH0.002401349.14227188
Exit179021912023-08-12 23:54:59333 days ago1691884499IN
ElasticDAO: Proxy
0 ETH0.0031673812.05925168
Exit175317552023-06-22 0:59:11385 days ago1687395551IN
ElasticDAO: Proxy
0 ETH0.0042350516.12421213
Exit168080342023-03-11 23:15:11487 days ago1678576511IN
ElasticDAO: Proxy
0 ETH0.005980722.77046871
Exit160157582022-11-21 3:39:11598 days ago1669001951IN
ElasticDAO: Proxy
0 ETH0.0028873711.17897409
Exit158504892022-10-29 1:38:11621 days ago1667007491IN
ElasticDAO: Proxy
0 ETH0.0028958311.21174322
Exit157931422022-10-21 1:17:47629 days ago1666315067IN
ElasticDAO: Proxy
0 ETH0.004681718.12604024
Exit157185182022-10-10 15:12:59639 days ago1665414779IN
ElasticDAO: Proxy
0 ETH0.008339232.28670493
Exit156281542022-09-28 0:07:35652 days ago1664323655IN
ElasticDAO: Proxy
0 ETH0.002375899.0458082
Exit154395562022-08-30 9:18:21680 days ago1661851101IN
ElasticDAO: Proxy
0 ETH0.0027284510.38762454
Exit151507062022-07-16 1:20:03726 days ago1657934403IN
ElasticDAO: Proxy
0 ETH0.0034560513.15829208
Exit150999362022-07-08 5:02:37734 days ago1657256557IN
ElasticDAO: Proxy
0 ETH0.006858426.11214784
Exit150752932022-07-04 9:48:10737 days ago1656928090IN
ElasticDAO: Proxy
0 ETH0.0030823911.73564759
Exit150264052022-06-26 0:47:53746 days ago1656204473IN
ElasticDAO: Proxy
0 ETH0.0064568525
Exit148825792022-06-01 3:31:28771 days ago1654054288IN
ElasticDAO: Proxy
0 ETH0.0082516331.94767531
Exit146124422022-04-19 0:44:19814 days ago1650329059IN
ElasticDAO: Proxy
0 ETH0.0056905321.66569588
Exit145933162022-04-16 1:04:46817 days ago1650071086IN
ElasticDAO: Proxy
0 ETH0.0079317930.19887476
Exit145567002022-04-10 7:47:14822 days ago1649576834IN
ElasticDAO: Proxy
0 ETH0.0075981628.92864914
Exit144731822022-03-28 6:49:43836 days ago1648450183IN
ElasticDAO: Proxy
0 ETH0.0060718323.50820129
Exit144410782022-03-23 6:51:23841 days ago1648018283IN
ElasticDAO: Proxy
0 ETH0.0051041719.43233124
Exit143651312022-03-11 11:02:26852 days ago1646996546IN
ElasticDAO: Proxy
0 ETH0.00574121.8578335
Exit143540232022-03-09 17:51:18854 days ago1646848278IN
ElasticDAO: Proxy
0 ETH0.0078795630
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To Value
191440932024-02-02 23:50:59159 days ago1706917859
ElasticDAO: Proxy
0.22110688 ETH
191224002024-01-30 22:47:59162 days ago1706654879
ElasticDAO: Proxy
0.11637449 ETH
191155582024-01-29 23:49:47163 days ago1706572187
ElasticDAO: Proxy
0.23744376 ETH
182499562023-09-30 17:17:11284 days ago1696094231
ElasticDAO: Proxy
0.33370419 ETH
181469662023-09-16 6:33:59299 days ago1694846039
ElasticDAO: Proxy
1.26301353 ETH
179021912023-08-12 23:54:59333 days ago1691884499
ElasticDAO: Proxy
0.34921277 ETH
175317552023-06-22 0:59:11385 days ago1687395551
ElasticDAO: Proxy
0.32946022 ETH
168080342023-03-11 23:15:11487 days ago1678576511
ElasticDAO: Proxy
0.39845948 ETH
160157582022-11-21 3:39:11598 days ago1669001951
ElasticDAO: Proxy
0.2720036 ETH
158504892022-10-29 1:38:11621 days ago1667007491
ElasticDAO: Proxy
0.09761476 ETH
157931422022-10-21 1:17:47629 days ago1666315067
ElasticDAO: Proxy
0.21558201 ETH
157185182022-10-10 15:12:59639 days ago1665414779
ElasticDAO: Proxy
0.22236617 ETH
156281542022-09-28 0:07:35652 days ago1664323655
ElasticDAO: Proxy
0.23714857 ETH
154395562022-08-30 9:18:21680 days ago1661851101
ElasticDAO: Proxy
1.14593363 ETH
151507062022-07-16 1:20:03726 days ago1657934403
ElasticDAO: Proxy
0.3076987 ETH
150999362022-07-08 5:02:37734 days ago1657256557
ElasticDAO: Proxy
0.2774701 ETH
150752932022-07-04 9:48:10737 days ago1656928090
ElasticDAO: Proxy
0.26456605 ETH
150264052022-06-26 0:47:53746 days ago1656204473
ElasticDAO: Proxy
0.64449515 ETH
148825792022-06-01 3:31:28771 days ago1654054288
ElasticDAO: Proxy
0.58330979 ETH
146124422022-04-19 0:44:19814 days ago1650329059
ElasticDAO: Proxy
0.33772503 ETH
145933162022-04-16 1:04:46817 days ago1650071086
ElasticDAO: Proxy
0.25205182 ETH
145567002022-04-10 7:47:14822 days ago1649576834
ElasticDAO: Proxy
0.16244858 ETH
144731822022-03-28 6:49:43836 days ago1648450183
ElasticDAO: Proxy
0.43074314 ETH
144410782022-03-23 6:51:23841 days ago1648018283
ElasticDAO: Proxy
1.06393136 ETH
143651312022-03-11 11:02:26852 days ago1646996546
ElasticDAO: Proxy
0.13081639 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PProxy

Compiler Version
v0.7.2+commit.51b20bc0

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 2 : PProxy.sol
pragma solidity ^0.7.1;

import "./PProxyStorage.sol";

contract PProxy is PProxyStorage {

    bytes32 constant IMPLEMENTATION_SLOT = keccak256(abi.encodePacked("IMPLEMENTATION_SLOT"));
    bytes32 constant OWNER_SLOT = keccak256(abi.encodePacked("OWNER_SLOT"));

    modifier onlyProxyOwner() {
        require(msg.sender == readAddress(OWNER_SLOT), "PProxy.onlyProxyOwner: msg sender not owner");
        _;
    }

    constructor () public {
        setAddress(OWNER_SLOT, msg.sender);
    }

    function getProxyOwner() public view returns (address) {
       return readAddress(OWNER_SLOT);
    }

    function setProxyOwner(address _newOwner) onlyProxyOwner public {
        setAddress(OWNER_SLOT, _newOwner);
    }

    function getImplementation() public view returns (address) {
        return readAddress(IMPLEMENTATION_SLOT);
    }

    function setImplementation(address _newImplementation) onlyProxyOwner public {
        setAddress(IMPLEMENTATION_SLOT, _newImplementation);
    }


    fallback () external payable {
       return internalFallback();
    }

    function internalFallback() internal virtual {
        address contractAddr = readAddress(IMPLEMENTATION_SLOT);
        assembly {
            let ptr := mload(0x40)
            calldatacopy(ptr, 0, calldatasize())
            let result := delegatecall(gas(), contractAddr, ptr, calldatasize(), 0, 0)
            let size := returndatasize()
            returndatacopy(ptr, 0, size)

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

}

File 2 of 2 : PProxyStorage.sol
pragma solidity ^0.7.1;

contract PProxyStorage {

    function readBool(bytes32 _key) public view returns(bool) {
        return storageRead(_key) == bytes32(uint256(1));
    }

    function setBool(bytes32 _key, bool _value) internal {
        if(_value) {
            storageSet(_key, bytes32(uint256(1)));
        } else {
            storageSet(_key, bytes32(uint256(0)));
        }
    }

    function readAddress(bytes32 _key) public view returns(address) {
        return bytes32ToAddress(storageRead(_key));
    }

    function setAddress(bytes32 _key, address _value) internal {
        storageSet(_key, addressToBytes32(_value));
    }

    function storageRead(bytes32 _key) public view returns(bytes32) {
        bytes32 value;
        //solium-disable-next-line security/no-inline-assembly
        assembly {
            value := sload(_key)
        }
        return value;
    }

    function storageSet(bytes32 _key, bytes32 _value) internal {
        // targetAddress = _address;  // No!
        bytes32 implAddressStorageKey = _key;
        //solium-disable-next-line security/no-inline-assembly
        assembly {
            sstore(implAddressStorageKey, _value)
        }
    }

    function bytes32ToAddress(bytes32 _value) public pure returns(address) {
        return address(uint160(uint256(_value)));
    }

    function addressToBytes32(address _value) public pure returns(bytes32) {
        return bytes32(uint256(_value));
    }

}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  },
  "metadata": {
    "useLiteralContent": true
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"_value","type":"address"}],"name":"addressToBytes32","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_value","type":"bytes32"}],"name":"bytes32ToAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getProxyOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"}],"name":"readAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"}],"name":"readBool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newImplementation","type":"address"}],"name":"setImplementation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"setProxyOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"}],"name":"storageRead","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b5061005460405160200180806913d5d3915497d4d313d560b21b815250600a019050604051602081830303815290604052805190602001203361005960201b60201c565b61007f565b61006b826100668361006f565b61007b565b5050565b6001600160a01b031690565b9055565b6105888061008e6000396000f3fe6080604052600436106100865760003560e01c80639d84ae69116100595780639d84ae691461015a578063aaf10f4214610184578063bb15ac8e14610199578063caaee91c146101d7578063d784d4261461020a57610086565b80631ab7710d1461009057806337a440e6146100c15780635ced058e146100fd57806382c947b714610127575b61008e61023d565b005b34801561009c57600080fd5b506100a56102ab565b604080516001600160a01b039092168252519081900360200190f35b3480156100cd57600080fd5b506100eb600480360360208110156100e457600080fd5b50356102ee565b60408051918252519081900360200190f35b34801561010957600080fd5b506100a56004803603602081101561012057600080fd5b50356102f2565b34801561013357600080fd5b506100eb6004803603602081101561014a57600080fd5b50356001600160a01b03166102f5565b34801561016657600080fd5b506100a56004803603602081101561017d57600080fd5b5035610301565b34801561019057600080fd5b506100a561031a565b3480156101a557600080fd5b506101c3600480360360208110156101bc57600080fd5b5035610361565b604080519115158252519081900360200190f35b3480156101e357600080fd5b5061008e600480360360208110156101fa57600080fd5b50356001600160a01b0316610375565b34801561021657600080fd5b5061008e6004803603602081101561022d57600080fd5b50356001600160a01b0316610440565b600061028460405160200180807212535413115351539510551253d397d4d313d5606a1b815250601301905060405160208183030381529060405280519060200120610301565b905060405136600082376000803683855af43d806000843e8180156102a7578184f35b8184fd5b60006102e960405160200180806913d5d3915497d4d313d560b21b815250600a01905060405160208183030381529060405280519060200120610301565b905090565b5490565b90565b6001600160a01b031690565b600061031461030f836102ee565b6102f2565b92915050565b60006102e960405160200180807212535413115351539510551253d397d4d313d5606a1b815250601301905060405160208183030381529060405280519060200120610301565b6000600161036e836102ee565b1492915050565b6103b160405160200180806913d5d3915497d4d313d560b21b815250600a01905060405160208183030381529060405280519060200120610301565b6001600160a01b0316336001600160a01b0316146104005760405162461bcd60e51b815260040180806020018281038252602b815260200180610528602b913960400191505060405180910390fd5b61043d60405160200180806913d5d3915497d4d313d560b21b815250600a019050604051602081830303815290604052805190602001208261050d565b50565b61047c60405160200180806913d5d3915497d4d313d560b21b815250600a01905060405160208183030381529060405280519060200120610301565b6001600160a01b0316336001600160a01b0316146104cb5760405162461bcd60e51b815260040180806020018281038252602b815260200180610528602b913960400191505060405180910390fd5b61043d60405160200180807212535413115351539510551253d397d4d313d5606a1b815250601301905060405160208183030381529060405280519060200120825b61051f8261051a836102f5565b610523565b5050565b905556fe5050726f78792e6f6e6c7950726f78794f776e65723a206d73672073656e646572206e6f74206f776e6572a264697066735822122013045800f3a0f8b44846ccdce4be7ea9edb399b703cac8c007f15cb93a4b204a64736f6c63430007020033

Deployed Bytecode

0x6080604052600436106100865760003560e01c80639d84ae69116100595780639d84ae691461015a578063aaf10f4214610184578063bb15ac8e14610199578063caaee91c146101d7578063d784d4261461020a57610086565b80631ab7710d1461009057806337a440e6146100c15780635ced058e146100fd57806382c947b714610127575b61008e61023d565b005b34801561009c57600080fd5b506100a56102ab565b604080516001600160a01b039092168252519081900360200190f35b3480156100cd57600080fd5b506100eb600480360360208110156100e457600080fd5b50356102ee565b60408051918252519081900360200190f35b34801561010957600080fd5b506100a56004803603602081101561012057600080fd5b50356102f2565b34801561013357600080fd5b506100eb6004803603602081101561014a57600080fd5b50356001600160a01b03166102f5565b34801561016657600080fd5b506100a56004803603602081101561017d57600080fd5b5035610301565b34801561019057600080fd5b506100a561031a565b3480156101a557600080fd5b506101c3600480360360208110156101bc57600080fd5b5035610361565b604080519115158252519081900360200190f35b3480156101e357600080fd5b5061008e600480360360208110156101fa57600080fd5b50356001600160a01b0316610375565b34801561021657600080fd5b5061008e6004803603602081101561022d57600080fd5b50356001600160a01b0316610440565b600061028460405160200180807212535413115351539510551253d397d4d313d5606a1b815250601301905060405160208183030381529060405280519060200120610301565b905060405136600082376000803683855af43d806000843e8180156102a7578184f35b8184fd5b60006102e960405160200180806913d5d3915497d4d313d560b21b815250600a01905060405160208183030381529060405280519060200120610301565b905090565b5490565b90565b6001600160a01b031690565b600061031461030f836102ee565b6102f2565b92915050565b60006102e960405160200180807212535413115351539510551253d397d4d313d5606a1b815250601301905060405160208183030381529060405280519060200120610301565b6000600161036e836102ee565b1492915050565b6103b160405160200180806913d5d3915497d4d313d560b21b815250600a01905060405160208183030381529060405280519060200120610301565b6001600160a01b0316336001600160a01b0316146104005760405162461bcd60e51b815260040180806020018281038252602b815260200180610528602b913960400191505060405180910390fd5b61043d60405160200180806913d5d3915497d4d313d560b21b815250600a019050604051602081830303815290604052805190602001208261050d565b50565b61047c60405160200180806913d5d3915497d4d313d560b21b815250600a01905060405160208183030381529060405280519060200120610301565b6001600160a01b0316336001600160a01b0316146104cb5760405162461bcd60e51b815260040180806020018281038252602b815260200180610528602b913960400191505060405180910390fd5b61043d60405160200180807212535413115351539510551253d397d4d313d5606a1b815250601301905060405160208183030381529060405280519060200120825b61051f8261051a836102f5565b610523565b5050565b905556fe5050726f78792e6f6e6c7950726f78794f776e65723a206d73672073656e646572206e6f74206f776e6572a264697066735822122013045800f3a0f8b44846ccdce4be7ea9edb399b703cac8c007f15cb93a4b204a64736f6c63430007020033

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  ]
[ 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.