ETH Price: $2,786.73 (+0.78%)
Gas: 0.9 Gwei

Token

Digital USD (DUSD)
 

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)

Balance
0 DUSD

Value
$0.00
0x1c53d541c7231a206726d61e71f0355b2a8baa81
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# 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
/**
 *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

Contract ABI

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

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.