Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
200,000,000 DUSD
Holders
666
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
DUSDProxy
Compiler Version
v0.5.8+commit.23d335f2
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-06-06 */ pragma solidity 0.5.8; /** * @title Proxy * @dev This is the proxy contract for the DUSDToken Registry */ contract Proxy { /** * @dev Tell 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 Fallback function allowing to perform a delegatecall to the given implementation. * This function will return whatever the implementation call returns. */ function() external payable { address _impl = implementation(); require(_impl != address(0), "Proxy: implementation contract not set"); 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) } } } } /** * @title UpgradeabilityProxy * @dev This contract represents a proxy where the implementation address to which it will delegate can be upgraded. */ contract UpgradeabilityProxy is Proxy { // Event, it will be emitted every time the implementation gets upgraded. event Upgraded(address indexed currentImplementation, address indexed newImplementation); // Storage position of the address of the current implementation bytes32 private constant implementationPosition = keccak256("DUSD.proxy.implementation"); /** * @dev Return to the current implementation. */ function implementation() public view returns (address impl) { bytes32 position = implementationPosition; assembly { impl := sload(position) } } /** * @dev Set the address of the current implementation. * @param newImplementation address representing the new implementation to be set. */ function _setImplementation(address newImplementation) internal { bytes32 position = implementationPosition; assembly { sstore(position, newImplementation) } } /** * @dev Upgrade the implementation address. * @param newImplementation representing the address of the new implementation to be set. */ function _upgradeTo(address newImplementation) internal { address currentImplementation = implementation(); require(currentImplementation != newImplementation, "UpgradeabilityProxy: newImplementation is the same as currentImplementation"); emit Upgraded(currentImplementation, newImplementation); _setImplementation(newImplementation); } } /** * @title DUSDProxy * @dev This contract combines an upgradeability proxy with basic authorization control functionalities */ contract DUSDProxy is UpgradeabilityProxy { // Event to show ownership has been transferred. event ProxyOwnershipTransferred(address indexed previousOwner, address indexed newOwner); // Event to show ownership transfer is pending. event NewPendingOwner(address currentOwner, address pendingOwner); // Storage position of the owner and pendingOwner of the contract. bytes32 private constant proxyOwnerPosition = keccak256("DUSD.proxy.owner"); bytes32 private constant pendingProxyOwnerPosition = keccak256("DUSD.pending.proxy.owner"); /** * @dev The constructor sets the original owner of the contract to the sender account. */ constructor() public { _setUpgradeabilityOwner(0xfe30e619cc2915C905Ca45C1BA8311109A3cBdB1); } /** * @dev Throw if called by any account other than the proxy owner. */ modifier onlyProxyOwner() { require(msg.sender == proxyOwner(), "DUSDProxy: the caller must be the proxy Owner"); _; } /** * @dev Throw if called by any account other than the pending owner. */ modifier onlyPendingProxyOwner() { require(msg.sender == pendingProxyOwner(), "DUSDProxy: the caller must be the pending proxy Owner"); _; } /** * @dev Return the address of the proxy owner. * @return The address of the proxy owner. */ function proxyOwner() public view returns (address owner) { bytes32 position = proxyOwnerPosition; assembly { owner := sload(position) } } /** * @dev Return the address of the pending proxy owner. * @return The address of the pending proxy owner. */ function pendingProxyOwner() public view returns (address pendingOwner) { bytes32 position = pendingProxyOwnerPosition; assembly { pendingOwner := sload(position) } } /** * @dev Set the address of the proxy owner. */ function _setUpgradeabilityOwner(address newProxyOwner) internal { bytes32 position = proxyOwnerPosition; assembly { sstore(position, newProxyOwner) } } /** * @dev Set the address of the pending proxy owner. */ function _setPendingUpgradeabilityOwner(address newPendingProxyOwner) internal { bytes32 position = pendingProxyOwnerPosition; assembly { sstore(position, newPendingProxyOwner) } } /** * @dev Change the owner of the proxy. * @param newOwner The address to transfer ownership to. */ function transferProxyOwnership(address newOwner) external onlyProxyOwner { require(newOwner != address(0), "DUSDProxy: cannot transfer control of the proxy owner to the zero address"); _setPendingUpgradeabilityOwner(newOwner); emit NewPendingOwner(proxyOwner(), newOwner); } /** * @dev Allow the pendingOwner to claim ownership of the proxy. */ function claimProxyOwnership() external onlyPendingProxyOwner { emit ProxyOwnershipTransferred(proxyOwner(), pendingProxyOwner()); _setUpgradeabilityOwner(pendingProxyOwner()); _setPendingUpgradeabilityOwner(address(0)); } /** * @dev Allow 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 { _upgradeTo(implementation); } }
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":"currentImplementation","type":"address"},{"indexed":true,"name":"newImplementation","type":"address"}],"name":"Upgraded","type":"event"}]
Contract Creation Code
608060405234801561001057600080fd5b5061003473fe30e619cc2915c905ca45c1ba8311109a3cbdb161003960201b60201c565b61006e565b604080517f445553442e70726f78792e6f776e6572000000000000000000000000000000008152905190819003601001902055565b6106eb8061007d6000396000f3fe6080604052600436106100555760003560e01c8063025313a2146100ce5780630add8140146100ff5780633659cfe6146101145780635c60da1b146101495780639965b3d61461015e578063f1739cae14610173575b600061005f6101a6565b90506001600160a01b0381166100a957604051600160e51b62461bcd0281526004018080602001828103825260268152602001806105a46026913960400191505060405180910390fd5b60405136600082376000803683855af43d806000843e8180156100ca578184f35b8184fd5b3480156100da57600080fd5b506100e36101dc565b604080516001600160a01b039092168252519081900360200190f35b34801561010b57600080fd5b506100e3610208565b34801561012057600080fd5b506101476004803603602081101561013757600080fd5b50356001600160a01b031661023e565b005b34801561015557600080fd5b506100e36101a6565b34801561016a57600080fd5b506101476102a4565b34801561017f57600080fd5b506101476004803603602081101561019657600080fd5b50356001600160a01b0316610368565b604080517f445553442e70726f78792e696d706c656d656e746174696f6e00000000000000815290519081900360190190205490565b60408051600160811b6f222aa9a217383937bc3c9737bbb732b902815290519081900360100190205490565b604080517f445553442e70656e64696e672e70726f78792e6f776e65720000000000000000815290519081900360180190205490565b6102466101dc565b6001600160a01b0316336001600160a01b03161461029857604051600160e51b62461bcd02815260040180806020018281038252602d815260200180610693602d913960400191505060405180910390fd5b6102a181610461565b50565b6102ac610208565b6001600160a01b0316336001600160a01b0316146102fe57604051600160e51b62461bcd0281526004018080602001828103825260358152602001806105ca6035913960400191505060405180910390fd5b610306610208565b6001600160a01b03166103176101dc565b6001600160a01b03167f5a3e66efaa1e445ebd894728a69d6959842ea1e97bd79b892797106e270efcd960405160405180910390a361035c610357610208565b61050e565b6103666000610539565b565b6103706101dc565b6001600160a01b0316336001600160a01b0316146103c257604051600160e51b62461bcd02815260040180806020018281038252602d815260200180610693602d913960400191505060405180910390fd5b6001600160a01b03811661040a57604051600160e51b62461bcd0281526004018080602001828103825260498152602001806105ff6049913960600191505060405180910390fd5b61041381610539565b7fb3d55174552271a4f1aaf36b72f50381e892171636b3fb5447fe00e995e7a37b61043c6101dc565b604080516001600160a01b03928316815291841660208301528051918290030190a150565b600061046b6101a6565b9050816001600160a01b0316816001600160a01b031614156104c157604051600160e51b62461bcd02815260040180806020018281038252604b815260200180610648604b913960600191505060405180910390fd5b816001600160a01b0316816001600160a01b03167f5d611f318680d00598bb735d61bacf0c514c6b50e1e5ad30040a4df2b12791c760405160405180910390a361050a8261056e565b5050565b60408051600160811b6f222aa9a217383937bc3c9737bbb732b9028152905190819003601001902055565b604080517f445553442e70656e64696e672e70726f78792e6f776e657200000000000000008152905190819003601801902055565b604080517f445553442e70726f78792e696d706c656d656e746174696f6e00000000000000815290519081900360190190205556fe50726f78793a20696d706c656d656e746174696f6e20636f6e7472616374206e6f74207365744455534450726f78793a207468652063616c6c6572206d757374206265207468652070656e64696e672070726f7879204f776e65724455534450726f78793a2063616e6e6f74207472616e7366657220636f6e74726f6c206f66207468652070726f7879206f776e657220746f20746865207a65726f2061646472657373557067726164656162696c69747950726f78793a206e6577496d706c656d656e746174696f6e206973207468652073616d652061732063757272656e74496d706c656d656e746174696f6e4455534450726f78793a207468652063616c6c6572206d757374206265207468652070726f7879204f776e6572a165627a7a723058200968ee6228ffc3115383125c18ee0282bf8e0df1cf7e24a8bbb24287caed72430029
Deployed Bytecode
0x6080604052600436106100555760003560e01c8063025313a2146100ce5780630add8140146100ff5780633659cfe6146101145780635c60da1b146101495780639965b3d61461015e578063f1739cae14610173575b600061005f6101a6565b90506001600160a01b0381166100a957604051600160e51b62461bcd0281526004018080602001828103825260268152602001806105a46026913960400191505060405180910390fd5b60405136600082376000803683855af43d806000843e8180156100ca578184f35b8184fd5b3480156100da57600080fd5b506100e36101dc565b604080516001600160a01b039092168252519081900360200190f35b34801561010b57600080fd5b506100e3610208565b34801561012057600080fd5b506101476004803603602081101561013757600080fd5b50356001600160a01b031661023e565b005b34801561015557600080fd5b506100e36101a6565b34801561016a57600080fd5b506101476102a4565b34801561017f57600080fd5b506101476004803603602081101561019657600080fd5b50356001600160a01b0316610368565b604080517f445553442e70726f78792e696d706c656d656e746174696f6e00000000000000815290519081900360190190205490565b60408051600160811b6f222aa9a217383937bc3c9737bbb732b902815290519081900360100190205490565b604080517f445553442e70656e64696e672e70726f78792e6f776e65720000000000000000815290519081900360180190205490565b6102466101dc565b6001600160a01b0316336001600160a01b03161461029857604051600160e51b62461bcd02815260040180806020018281038252602d815260200180610693602d913960400191505060405180910390fd5b6102a181610461565b50565b6102ac610208565b6001600160a01b0316336001600160a01b0316146102fe57604051600160e51b62461bcd0281526004018080602001828103825260358152602001806105ca6035913960400191505060405180910390fd5b610306610208565b6001600160a01b03166103176101dc565b6001600160a01b03167f5a3e66efaa1e445ebd894728a69d6959842ea1e97bd79b892797106e270efcd960405160405180910390a361035c610357610208565b61050e565b6103666000610539565b565b6103706101dc565b6001600160a01b0316336001600160a01b0316146103c257604051600160e51b62461bcd02815260040180806020018281038252602d815260200180610693602d913960400191505060405180910390fd5b6001600160a01b03811661040a57604051600160e51b62461bcd0281526004018080602001828103825260498152602001806105ff6049913960600191505060405180910390fd5b61041381610539565b7fb3d55174552271a4f1aaf36b72f50381e892171636b3fb5447fe00e995e7a37b61043c6101dc565b604080516001600160a01b03928316815291841660208301528051918290030190a150565b600061046b6101a6565b9050816001600160a01b0316816001600160a01b031614156104c157604051600160e51b62461bcd02815260040180806020018281038252604b815260200180610648604b913960600191505060405180910390fd5b816001600160a01b0316816001600160a01b03167f5d611f318680d00598bb735d61bacf0c514c6b50e1e5ad30040a4df2b12791c760405160405180910390a361050a8261056e565b5050565b60408051600160811b6f222aa9a217383937bc3c9737bbb732b9028152905190819003601001902055565b604080517f445553442e70656e64696e672e70726f78792e6f776e657200000000000000008152905190819003601801902055565b604080517f445553442e70726f78792e696d706c656d656e746174696f6e00000000000000815290519081900360190190205556fe50726f78793a20696d706c656d656e746174696f6e20636f6e7472616374206e6f74207365744455534450726f78793a207468652063616c6c6572206d757374206265207468652070656e64696e672070726f7879204f776e65724455534450726f78793a2063616e6e6f74207472616e7366657220636f6e74726f6c206f66207468652070726f7879206f776e657220746f20746865207a65726f2061646472657373557067726164656162696c69747950726f78793a206e6577496d706c656d656e746174696f6e206973207468652073616d652061732063757272656e74496d706c656d656e746174696f6e4455534450726f78793a207468652063616c6c6572206d757374206265207468652070726f7879204f776e6572a165627a7a723058200968ee6228ffc3115383125c18ee0282bf8e0df1cf7e24a8bbb24287caed72430029
Deployed Bytecode Sourcemap
3008:3624:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;614:13;630:16;:14;:16::i;:::-;614:32;-1:-1:-1;;;;;;665:19:0;;657:70;;;;-1:-1:-1;;;;;657:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;789:4;783:11;829:12;826:1;821:3;808:34;917:1;914;900:12;895:3;888:5;883:3;870:49;945:14;996:4;993:1;988:3;973:28;1024:6;1044:28;;;;1108:4;1103:3;1096:17;1044:28;1065:4;1060:3;1053:17;4430:183;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4430:183:0;;;:::i;:::-;;;;-1:-1:-1;;;;;4430:183:0;;;;;;;;;;;;;;4752:211;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4752:211:0;;;:::i;6517:112::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6517:112:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6517:112:0;-1:-1:-1;;;;;6517:112:0;;:::i;:::-;;1758:187;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1758:187:0;;;:::i;6068:254::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6068:254:0;;;:::i;5668:307::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5668:307:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5668:307:0;-1:-1:-1;;;;;5668:307:0;;:::i;1758:187::-;1644:38;;;;;;;;;;;;;;;;1912:15;;1891:47::o;4430:183::-;3459:29;;;-1:-1:-1;;;;;3459:29:0;;;;;;;;;;;;4580:15;;4556:50::o;4752:211::-;3548:37;;;;;;;;;;;;;;;;4930:15;;4899:57::o;6517:112::-;3964:12;:10;:12::i;:::-;-1:-1:-1;;;;;3950:26:0;:10;-1:-1:-1;;;;;3950:26:0;;3942:84;;;;-1:-1:-1;;;;;3942:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6595:26;6606:14;6595:10;:26::i;:::-;6517:112;:::o;6068:254::-;4210:19;:17;:19::i;:::-;-1:-1:-1;;;;;4196:33:0;:10;-1:-1:-1;;;;;4196:33:0;;4188:99;;;;-1:-1:-1;;;;;4188:99:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6186:19;:17;:19::i;:::-;-1:-1:-1;;;;;6146:60:0;6172:12;:10;:12::i;:::-;-1:-1:-1;;;;;6146:60:0;;;;;;;;;;;6217:44;6241:19;:17;:19::i;:::-;6217:23;:44::i;:::-;6272:42;6311:1;6272:30;:42::i;:::-;6068:254::o;5668:307::-;3964:12;:10;:12::i;:::-;-1:-1:-1;;;;;3950:26:0;:10;-1:-1:-1;;;;;3950:26:0;;3942:84;;;;-1:-1:-1;;;;;3942:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5761:22:0;;5753:108;;;;-1:-1:-1;;;;;5753:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5872:40;5903:8;5872:30;:40::i;:::-;5928:39;5944:12;:10;:12::i;:::-;5928:39;;;-1:-1:-1;;;;;5928:39:0;;;;;;;;;;;;;;;;;;;;;5668:307;:::o;2485:378::-;2552:29;2584:16;:14;:16::i;:::-;2552:48;;2644:17;-1:-1:-1;;;;;2619:42:0;:21;-1:-1:-1;;;;;2619:42:0;;;2611:130;;;;-1:-1:-1;;;;;2611:130:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2789:17;-1:-1:-1;;;;;2757:50:0;2766:21;-1:-1:-1;;;;;2757:50:0;;;;;;;;;;;2818:37;2837:17;2818:18;:37::i;:::-;2485:378;;:::o;5036:197::-;3459:29;;;-1:-1:-1;;;;;3459:29:0;;;;;;;;;;;;5184:31;5169:57::o;5314:225::-;3548:37;;;;;;;;;;;;;;;;5483:38;5468:64::o;2116:202::-;1644:38;;;;;;;;;;;;;;;;2265:35;2252:59::o
Swarm Source
bzzr://0968ee6228ffc3115383125c18ee0282bf8e0df1cf7e24a8bbb24287caed7243
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.