ETH Price: $3,502.63 (+3.10%)
Gas: 61 Gwei

Contract

0xc72fbD264b40D88E445bcf82663D63FF21e722AF
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Approve183698382023-10-17 11:36:35138 days ago1697542595IN
0xc72fbD26...F21e722AF
0 ETH0.000465849.04057865
Deposit For With...179831332023-08-24 7:40:23193 days ago1692862823IN
0xc72fbD26...F21e722AF
0 ETH0.0015429317
Transfer179487182023-08-19 12:07:47197 days ago1692446867IN
0xc72fbD26...F21e722AF
0 ETH0.000825715.8893735
Approve179000672023-08-12 16:46:59204 days ago1691858819IN
0xc72fbD26...F21e722AF
0 ETH0.0004986214.48301727
Approve178871212023-08-10 21:18:35206 days ago1691702315IN
0xc72fbD26...F21e722AF
0 ETH0.0010278819.95738045
Approve178775532023-08-09 13:09:47207 days ago1691586587IN
0xc72fbD26...F21e722AF
0 ETH0.0017644234.242053
Approve178237912023-08-02 0:39:35215 days ago1690936775IN
0xc72fbD26...F21e722AF
0 ETH0.0012366724
Withdraw178224502023-08-01 20:10:23215 days ago1690920623IN
0xc72fbD26...F21e722AF
0 ETH0.0074884943.85985407
Approve177290572023-07-19 18:36:35228 days ago1689791795IN
0xc72fbD26...F21e722AF
0 ETH0.0014260527.67535771
Approve177243412023-07-19 2:42:47229 days ago1689734567IN
0xc72fbD26...F21e722AF
0 ETH0.0009056726.3063049
Approve177241872023-07-19 2:11:47229 days ago1689732707IN
0xc72fbD26...F21e722AF
0 ETH0.0006950720.18913871
Approve177241202023-07-19 1:58:11229 days ago1689731891IN
0xc72fbD26...F21e722AF
0 ETH0.0008769717.01946426
Transfer176510672023-07-08 19:16:11239 days ago1688843771IN
0xc72fbD26...F21e722AF
0 ETH0.0007900715.20374714
Transfer176510422023-07-08 19:11:11239 days ago1688843471IN
0xc72fbD26...F21e722AF
0 ETH0.0007699114.81576545
Transfer176143492023-07-03 15:32:59244 days ago1688398379IN
0xc72fbD26...F21e722AF
0 ETH0.0018302835.22076365
Withdraw175923102023-06-30 13:12:35247 days ago1688130755IN
0xc72fbD26...F21e722AF
0 ETH0.0063825438.22068162
Transfer173714662023-05-30 11:32:35278 days ago1685446355IN
0xc72fbD26...F21e722AF
0 ETH0.0014528741.71341312
Transfer173714452023-05-30 11:27:59278 days ago1685446079IN
0xc72fbD26...F21e722AF
0 ETH0.0015847939.97762649
Approve173714392023-05-30 11:26:47278 days ago1685446007IN
0xc72fbD26...F21e722AF
0 ETH0.0020771240.35759009
Transfer173714102023-05-30 11:20:47278 days ago1685445647IN
0xc72fbD26...F21e722AF
0 ETH0.0019941735.13720434
Transfer173498782023-05-27 10:44:59281 days ago1685184299IN
0xc72fbD26...F21e722AF
0 ETH0.0011296921.73917709
Transfer172932762023-05-19 11:35:11289 days ago1684496111IN
0xc72fbD26...F21e722AF
0 ETH0.0012171334.90890409
Transfer172915822023-05-19 5:51:47290 days ago1684475507IN
0xc72fbD26...F21e722AF
0 ETH0.0017650233.96506776
Transfer172780422023-05-17 8:01:11292 days ago1684310471IN
0xc72fbD26...F21e722AF
0 ETH0.0014949242.87631436
Transfer172780212023-05-17 7:56:59292 days ago1684310219IN
0xc72fbD26...F21e722AF
0 ETH0.0022000742.3564004
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x3E70FF09...CC3d92e64
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
PProxy

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
Yes with 200 runs

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

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.8.0;

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(uint160(_value)));
    }

}

Settings
{
  "remappings": [
    "@bridge/=src/modules/vedough-bridge/",
    "@forge-std/=lib/forge-std/src/",
    "@governance/=src/modules/governance/",
    "@interfaces/=src/interfaces/",
    "@mocks/=test/mocks/",
    "@oracles/=src/modules/reward-policies/",
    "@oz-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
    "@oz/=lib/openzeppelin-contracts/contracts/",
    "@pproxy/=lib/pie-proxy/contracts/",
    "@prv/=src/modules/PRV/",
    "@rewards/=src/modules/rewards/",
    "@src/=src/",
    "@test/=test/",
    "ds-test/=lib/forge-std/lib/ds-test/src/",
    "erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/",
    "forge-std/=lib/forge-std/src/",
    "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/",
    "openzeppelin-contracts/=lib/openzeppelin-contracts/",
    "pie-proxy/=lib/pie-proxy/contracts/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "metadata": {
    "bytecodeHash": "ipfs"
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "london",
  "libraries": {
    "src/modules/PRV/bitfield.sol": {
      "Bitfields": "0x013b49b72da7f746eec30c7bca848bd788c4fcfe"
    }
  }
}

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"}]

Deployed Bytecode

0x6080604052600436106100865760003560e01c80639d84ae69116100595780639d84ae6914610134578063aaf10f4214610154578063bb15ac8e14610169578063caaee91c14610199578063d784d426146101b957610086565b80631ab7710d1461009057806337a440e6146100c25780635ced058e146100ef57806382c947b71461010d575b61008e6101d9565b005b34801561009c57600080fd5b506100a5610249565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100ce57600080fd5b506100e16100dd3660046103e4565b5490565b6040519081526020016100b9565b3480156100fb57600080fd5b506100a561010a3660046103e4565b90565b34801561011957600080fd5b506100e16101283660046103fd565b6001600160a01b031690565b34801561014057600080fd5b506100a561014f3660046103e4565b610273565b34801561016057600080fd5b506100a5610286565b34801561017557600080fd5b506101896101843660046103e4565b6102b4565b60405190151581526020016100b9565b3480156101a557600080fd5b5061008e6101b43660046103fd565b6102c7565b3480156101c557600080fd5b5061008e6101d43660046103fd565b610367565b6000610222604051602001610207907212535413115351539510551253d397d4d313d5606a1b815260130190565b60405160208183030381529060405280519060200120610273565b905060405136600082376000803683855af43d806000843e818015610245578184f35b8184fd5b600061026e604051602001610207906913d5d3915497d4d313d560b21b8152600a0190565b905090565b600061028061010a835490565b92915050565b600061026e604051602001610207907212535413115351539510551253d397d4d313d5606a1b815260130190565b600060016102c0835490565b1492915050565b6040516913d5d3915497d4d313d560b21b60208201526102e990602a01610207565b6001600160a01b0316336001600160a01b0316146103225760405162461bcd60e51b81526004016103199061042d565b60405180910390fd5b6040516913d5d3915497d4d313d560b21b602082015261036490602a015b60405160208183030381529060405280519060200120826001600160a01b03169055565b50565b6040516913d5d3915497d4d313d560b21b602082015261038990602a01610207565b6001600160a01b0316336001600160a01b0316146103b95760405162461bcd60e51b81526004016103199061042d565b6040517212535413115351539510551253d397d4d313d5606a1b602082015261036490603301610340565b6000602082840312156103f657600080fd5b5035919050565b60006020828403121561040f57600080fd5b81356001600160a01b038116811461042657600080fd5b9392505050565b6020808252602b908201527f5050726f78792e6f6e6c7950726f78794f776e65723a206d73672073656e646560408201526a39103737ba1037bbb732b960a91b60608201526080019056fea2646970667358221220ca719e95db069c9f0a47ee239b2bc79b412ed0afae289b3ec91594cbe1f3e65664736f6c63430008100033

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

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