Transactions
Internal Transactions
Coin Balance History
Logs
Code
Read Contract
Read Proxy
Write Contract
Write Proxy
- Contract name:
- EternalStorageProxy
- Optimization enabled
- true
- Compiler version
- v0.4.24+commit.e67f0147
- Optimization runs
- 200
- EVM Version
- byzantium
- Verified at
- 2021-09-03T23:29:57.263605Z
Contract source code
// File: contracts/upgradeability/EternalStorage.solpragma solidity 0.4.24;/*** @title EternalStorage* @dev This contract holds all the necessary state variables to carry out the storage of any contract.*/contract EternalStorage {mapping(bytes32 => uint256) internal uintStorage;mapping(bytes32 => string) internal stringStorage;mapping(bytes32 => address) internal addressStorage;mapping(bytes32 => bytes) internal bytesStorage;mapping(bytes32 => bool) internal boolStorage;mapping(bytes32 => int256) internal intStorage;}// File: openzeppelin-solidity/contracts/AddressUtils.solpragma solidity ^0.4.24;/*** Utility library of inline functions on addresses*/library AddressUtils {/*** Returns whether the target address is a contract* @dev This function will return false if invoked during the constructor of a contract,* as the code is not actually created until after the constructor finishes.* @param _addr address to check* @return whether the target address is a contract*/function isContract(address _addr) internal view returns (bool) {uint256 size;// XXX Currently there is no better way to check if there is a contract in an address// than to check the size of the code at that address.// See https://ethereum.stackexchange.com/a/14016/36603// for more details about how this works.
Contract ABI
[{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"upgradeTo","inputs":[{"type":"uint256","name":"version"},{"type":"address","name":"implementation"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"version","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"address","name":""}],"name":"implementation","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"address","name":""}],"name":"upgradeabilityOwner","inputs":[],"constant":true},{"type":"function","stateMutability":"payable","payable":true,"outputs":[],"name":"upgradeToAndCall","inputs":[{"type":"uint256","name":"version"},{"type":"address","name":"implementation"},{"type":"bytes","name":"data"}],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"transferProxyOwnership","inputs":[{"type":"address","name":"newOwner"}],"constant":false},{"type":"fallback","stateMutability":"payable","payable":true},{"type":"event","name":"ProxyOwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","indexed":false},{"type":"address","name":"newOwner","indexed":false}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"type":"uint256","name":"version","indexed":false},{"type":"address","name":"implementation","indexed":true}],"anonymous":false}]
Deployed ByteCode
0x6080604052600436106100775763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416633ad06d1681146100c257806354fd4d50146100e85780635c60da1b1461010f5780636fde820214610140578063a9c45fcb14610155578063f1739cae14610179575b600061008161019a565b9050600160a060020a038116151561009857600080fd5b60405136600082376000803683855af43d82016040523d6000833e8080156100be573d83f35b3d83fd5b3480156100ce57600080fd5b506100e6600435600160a060020a03602435166101a9565b005b3480156100f457600080fd5b506100fd6101d3565b60408051918252519081900360200190f35b34801561011b57600080fd5b5061012461019a565b60408051600160a060020a039092168252519081900360200190f35b34801561014c57600080fd5b506101246101d9565b6100e6600480359060248035600160a060020a0316916044359182019101356101e8565b34801561018557600080fd5b506100e6600160a060020a0360043516610250565b600854600160a060020a031690565b6101b16101d9565b600160a060020a031633146101c557600080fd5b6101cf82826102d8565b5050565b60075490565b600654600160a060020a031690565b6101f06101d9565b600160a060020a0316331461020457600080fd5b61020e84846101a9565b30600160a060020a03163483836040518083838082843782019150509250505060006040518083038185875af192505050151561024a57600080fd5b50505050565b6102586101d9565b600160a060020a0316331461026c57600080fd5b600160a060020a038116151561028157600080fd5b7f5a3e66efaa1e445ebd894728a69d6959842ea1e97bd79b892797106e270efcd96102aa6101d9565b60408051600160a060020a03928316815291841660208301528051918290030190a16102d58161037d565b50565b600854600160a060020a03828116911614156102f357600080fd5b6102fc816103ac565b151561030757600080fd5b600754821161031557600080fd5b600782905560088054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff1990911681179091556040805184815290517f4289d6195cf3c2d2174adf98d0e19d4d2d08887995b99cb7b100e7ffe795820e9181900360200190a25050565b6006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000903b11905600a165627a7a72305820ffffa318ab38965b23c572ab14e00615888245c2095110af0070669c729ad1f00029