More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 50,053 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 21384433 | 13 days ago | IN | 0 ETH | 0.00057306 | ||||
Approve | 21355403 | 17 days ago | IN | 0 ETH | 0.00049258 | ||||
Transfer | 21355093 | 17 days ago | IN | 0 ETH | 0.00047379 | ||||
Transfer | 21354495 | 17 days ago | IN | 0 ETH | 0.0006176 | ||||
Transfer | 21307675 | 24 days ago | IN | 0 ETH | 0.00071011 | ||||
Transfer | 21260768 | 30 days ago | IN | 0 ETH | 0.00043013 | ||||
Transfer | 21228799 | 35 days ago | IN | 0 ETH | 0.00067376 | ||||
Transfer | 21188135 | 40 days ago | IN | 0 ETH | 0.00109282 | ||||
Transfer | 21188117 | 40 days ago | IN | 0 ETH | 0.00164932 | ||||
Transfer | 21170241 | 43 days ago | IN | 0 ETH | 0.00167011 | ||||
Transfer | 21080434 | 55 days ago | IN | 0 ETH | 0.001016 | ||||
Approve | 20953165 | 73 days ago | IN | 0 ETH | 0.00071395 | ||||
Transfer | 20952985 | 73 days ago | IN | 0 ETH | 0.00055298 | ||||
Transfer | 20952709 | 73 days ago | IN | 0 ETH | 0.00051116 | ||||
Approve | 20838795 | 89 days ago | IN | 0 ETH | 0.00063919 | ||||
Transfer | 20837456 | 89 days ago | IN | 0 ETH | 0.0009755 | ||||
Approve | 20711208 | 107 days ago | IN | 0 ETH | 0.00007158 | ||||
Transfer | 20711155 | 107 days ago | IN | 0 ETH | 0.0001224 | ||||
Approve | 20618989 | 120 days ago | IN | 0 ETH | 0.00010332 | ||||
Transfer | 20572107 | 126 days ago | IN | 0 ETH | 0.0001224 | ||||
Transfer | 19831370 | 230 days ago | IN | 0 ETH | 0.00022568 | ||||
Transfer | 19830765 | 230 days ago | IN | 0 ETH | 0.00018982 | ||||
Transfer | 19827480 | 230 days ago | IN | 0 ETH | 0.00019108 | ||||
Transfer | 19827299 | 230 days ago | IN | 0 ETH | 0.00025192 | ||||
Transfer | 19827195 | 230 days ago | IN | 0 ETH | 0.00019111 |
Latest 25 internal transactions (View All)
Advanced mode:
Loading...
Loading
Contract Name:
TrueCAD
Compiler Version
v0.4.23+commit.124ca40d
Optimization Enabled:
Yes with 20000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-04-27 */ pragma solidity ^0.4.23; // File: contracts/Proxy/OwnedUpgradeabilityProxy.sol /** * @title OwnedUpgradeabilityProxy * @dev This contract combines an upgradeability proxy with basic authorization control functionalities */ contract TrueCAD { /** * @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 indexed previousOwner, address indexed newOwner); /** * @dev Event to show ownership transfer is pending * @param currentOwner representing the address of the current owner * @param pendingOwner representing the address of the pending owner */ event NewPendingOwner(address currentOwner, address pendingOwner); // Storage position of the owner and pendingOwner of the contract bytes32 private constant proxyOwnerPosition = 0x136d55780fb1583e87bb6fa1fda0bbe2746553b012c9291a830fad1e95c269cc;//keccak256("trueCAD.proxy.owner"); bytes32 private constant pendingProxyOwnerPosition = 0xca6c24188764c50fa5c7b728d85fdd98bea1991968b9f4bd4000ae3ace49faac;//keccak256("trueCAD.pending.proxy.owner"); /** * @dev the constructor sets the original owner of the contract to the sender account. */ constructor() public { _setUpgradeabilityOwner(msg.sender); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyProxyOwner() { require(msg.sender == proxyOwner(), "only Proxy Owner"); _; } /** * @dev Throws if called by any account other than the pending owner. */ modifier onlyPendingProxyOwner() { require(msg.sender == pendingProxyOwner(), "only pending Proxy Owner"); _; } /** * @dev Tells the address of the owner * @return the address of the owner */ function proxyOwner() public view returns (address owner) { bytes32 position = proxyOwnerPosition; assembly { owner := sload(position) } } /** * @dev Tells the address of the owner * @return the address of the owner */ function pendingProxyOwner() public view returns (address pendingOwner) { bytes32 position = pendingProxyOwnerPosition; assembly { pendingOwner := sload(position) } } /** * @dev Sets the address of the owner */ function _setUpgradeabilityOwner(address newProxyOwner) internal { bytes32 position = proxyOwnerPosition; assembly { sstore(position, newProxyOwner) } } /** * @dev Sets the address of the owner */ function _setPendingUpgradeabilityOwner(address newPendingProxyOwner) internal { bytes32 position = pendingProxyOwnerPosition; assembly { sstore(position, newPendingProxyOwner) } } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. *changes the pending owner to newOwner. But doesn't actually transfer * @param newOwner The address to transfer ownership to. */ function transferProxyOwnership(address newOwner) external onlyProxyOwner { require(newOwner != address(0)); _setPendingUpgradeabilityOwner(newOwner); emit NewPendingOwner(proxyOwner(), newOwner); } /** * @dev Allows the pendingOwner to claim ownership of the proxy */ function claimProxyOwnership() external onlyPendingProxyOwner { emit ProxyOwnershipTransferred(proxyOwner(), pendingProxyOwner()); _setUpgradeabilityOwner(pendingProxyOwner()); _setPendingUpgradeabilityOwner(address(0)); } /** * @dev Allows the proxy owner to upgrade the current version of the proxy. * @param implementation representing the address of the new implementation to be set. */ function upgradeTo(address implementation) external onlyProxyOwner { address currentImplementation; bytes32 position = implementationPosition; assembly { currentImplementation := sload(position) } require(currentImplementation != implementation); assembly { sstore(position, implementation) } emit Upgraded(implementation); } /** * @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); // Storage position of the address of the current implementation bytes32 private constant implementationPosition = 0xecfd2ee7a4295d533a08882dec6729582fc6bda7812f32b75ae1ea4807d08982; //keccak256("trueCAD.proxy.implementation"); function implementation() public view returns (address impl) { bytes32 position = implementationPosition; assembly { impl := sload(position) } } /** * @dev Fallback function allowing to perform a delegatecall to the given implementation. * This function will return whatever the implementation call returns */ function() external payable { assembly { let ptr := mload(0x40) calldatacopy(ptr, returndatasize, calldatasize) let result := delegatecall(gas, sload(0xecfd2ee7a4295d533a08882dec6729582fc6bda7812f32b75ae1ea4807d08982), ptr, calldatasize, returndatasize, returndatasize) returndatacopy(ptr, 0, returndatasize) switch result case 0 { revert(ptr, returndatasize) } default { return(ptr, returndatasize) } } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"proxyOwner","outputs":[{"name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingProxyOwner","outputs":[{"name":"pendingOwner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"implementation","type":"address"}],"name":"upgradeTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"name":"impl","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"claimProxyOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferProxyOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"ProxyOwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"currentOwner","type":"address"},{"indexed":false,"name":"pendingOwner","type":"address"}],"name":"NewPendingOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"implementation","type":"address"}],"name":"Upgraded","type":"event"}]
Contract Creation Code
608060405234801561001057600080fd5b5061002333640100000000610028810204565b61004c565b7f136d55780fb1583e87bb6fa1fda0bbe2746553b012c9291a830fad1e95c269cc55565b6106038061005b6000396000f3006080604052600436106100775763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663025313a281146100ba5780630add8140146100f85780633659cfe61461010d5780635c60da1b1461013d5780639965b3d614610152578063f1739cae14610167575b604051363d82373d3d36837fecfd2ee7a4295d533a08882dec6729582fc6bda7812f32b75ae1ea4807d08982545af43d6000833e8080156100b6573d83f35b3d83fd5b3480156100c657600080fd5b506100cf610195565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561010457600080fd5b506100cf6101ba565b34801561011957600080fd5b5061013b73ffffffffffffffffffffffffffffffffffffffff600435166101df565b005b34801561014957600080fd5b506100cf61031a565b34801561015e57600080fd5b5061013b61033f565b34801561017357600080fd5b5061013b73ffffffffffffffffffffffffffffffffffffffff60043516610466565b7f136d55780fb1583e87bb6fa1fda0bbe2746553b012c9291a830fad1e95c269cc5490565b7fca6c24188764c50fa5c7b728d85fdd98bea1991968b9f4bd4000ae3ace49faac5490565b6000806101ea610195565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561028557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f6f6e6c792050726f7879204f776e657200000000000000000000000000000000604482015290519081900360640190fd5b50507fecfd2ee7a4295d533a08882dec6729582fc6bda7812f32b75ae1ea4807d0898280549073ffffffffffffffffffffffffffffffffffffffff80831690841614156102d157600080fd5b82815560405173ffffffffffffffffffffffffffffffffffffffff8416907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2505050565b7fecfd2ee7a4295d533a08882dec6729582fc6bda7812f32b75ae1ea4807d089825490565b6103476101ba565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156103e257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f6f6e6c792070656e64696e672050726f7879204f776e65720000000000000000604482015290519081900360640190fd5b6103ea6101ba565b73ffffffffffffffffffffffffffffffffffffffff16610408610195565b73ffffffffffffffffffffffffffffffffffffffff167f5a3e66efaa1e445ebd894728a69d6959842ea1e97bd79b892797106e270efcd960405160405180910390a361045a6104556101ba565b61058f565b61046460006105b3565b565b61046e610195565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561050957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f6f6e6c792050726f7879204f776e657200000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116151561052b57600080fd5b610534816105b3565b7fb3d55174552271a4f1aaf36b72f50381e892171636b3fb5447fe00e995e7a37b61055d610195565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301528051918290030190a150565b7f136d55780fb1583e87bb6fa1fda0bbe2746553b012c9291a830fad1e95c269cc55565b7fca6c24188764c50fa5c7b728d85fdd98bea1991968b9f4bd4000ae3ace49faac555600a165627a7a723058202dc334bc3bb45b1de9bbb34c5ecabfc8e5966a732fe50a706e38026ed4213fd60029
Deployed Bytecode
0x6080604052600436106100775763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663025313a281146100ba5780630add8140146100f85780633659cfe61461010d5780635c60da1b1461013d5780639965b3d614610152578063f1739cae14610167575b604051363d82373d3d36837fecfd2ee7a4295d533a08882dec6729582fc6bda7812f32b75ae1ea4807d08982545af43d6000833e8080156100b6573d83f35b3d83fd5b3480156100c657600080fd5b506100cf610195565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561010457600080fd5b506100cf6101ba565b34801561011957600080fd5b5061013b73ffffffffffffffffffffffffffffffffffffffff600435166101df565b005b34801561014957600080fd5b506100cf61031a565b34801561015e57600080fd5b5061013b61033f565b34801561017357600080fd5b5061013b73ffffffffffffffffffffffffffffffffffffffff60043516610466565b7f136d55780fb1583e87bb6fa1fda0bbe2746553b012c9291a830fad1e95c269cc5490565b7fca6c24188764c50fa5c7b728d85fdd98bea1991968b9f4bd4000ae3ace49faac5490565b6000806101ea610195565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561028557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f6f6e6c792050726f7879204f776e657200000000000000000000000000000000604482015290519081900360640190fd5b50507fecfd2ee7a4295d533a08882dec6729582fc6bda7812f32b75ae1ea4807d0898280549073ffffffffffffffffffffffffffffffffffffffff80831690841614156102d157600080fd5b82815560405173ffffffffffffffffffffffffffffffffffffffff8416907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2505050565b7fecfd2ee7a4295d533a08882dec6729582fc6bda7812f32b75ae1ea4807d089825490565b6103476101ba565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156103e257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f6f6e6c792070656e64696e672050726f7879204f776e65720000000000000000604482015290519081900360640190fd5b6103ea6101ba565b73ffffffffffffffffffffffffffffffffffffffff16610408610195565b73ffffffffffffffffffffffffffffffffffffffff167f5a3e66efaa1e445ebd894728a69d6959842ea1e97bd79b892797106e270efcd960405160405180910390a361045a6104556101ba565b61058f565b61046460006105b3565b565b61046e610195565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561050957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f6f6e6c792050726f7879204f776e657200000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116151561052b57600080fd5b610534816105b3565b7fb3d55174552271a4f1aaf36b72f50381e892171636b3fb5447fe00e995e7a37b61055d610195565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301528051918290030190a150565b7f136d55780fb1583e87bb6fa1fda0bbe2746553b012c9291a830fad1e95c269cc55565b7fca6c24188764c50fa5c7b728d85fdd98bea1991968b9f4bd4000ae3ace49faac555600a165627a7a723058202dc334bc3bb45b1de9bbb34c5ecabfc8e5966a732fe50a706e38026ed4213fd60029
Swarm Source
bzzr://2dc334bc3bb45b1de9bbb34c5ecabfc8e5966a732fe50a706e38026ed4213fd6
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.