Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0x4Cd988AfBad37289BAAf53C13e98E2BD46aAEa8c
Balance 0 ETH
Nonce 1
Code Size 4190 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

4190 bytes
0x606060405236156101305763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811461013557806307da68f51461015a578063095ea7b31461016f57806313af4035146101a557806318160ddd146101c657806323b872dd146101eb578063313ce567146102275780633452f51d1461024c5780635ac801fe1461028b57806369d3e20e146102a357806370a08231146102c457806375f12b21146102f55780637a9e5e4b1461031c5780637afa1eed1461033d5780638402181f1461036c5780638da5cb5b146103ab57806390bc1693146103da57806395d89b41146103fb578063a9059cbb14610420578063be9a655514610456578063bf7e214f1461046b578063dd62ed3e1461049a578063e5d4610f146104d1575b600080fd5b341561014057600080fd5b610148610507565b60405190815260200160405180910390f35b341561016557600080fd5b61016d61050d565b005b341561017a57600080fd5b610191600160a060020a03600435166024356105ac565b604051901515815260200160405180910390f35b34156101b057600080fd5b61016d600160a060020a0360043516610633565b005b34156101d157600080fd5b6101486106b1565b60405190815260200160405180910390f35b34156101f657600080fd5b610191600160a060020a03600435811690602435166044356106b8565b604051901515815260200160405180910390f35b341561023257600080fd5b610148610741565b60405190815260200160405180910390f35b341561025757600080fd5b610191600160a060020a03600435166001608060020a0360243516610747565b604051901515815260200160405180910390f35b341561029657600080fd5b61016d600435610765565b005b34156102ae57600080fd5b61016d6001608060020a036004351661078d565b005b34156102cf57600080fd5b610148600160a060020a0360043516610880565b60405190815260200160405180910390f35b341561030057600080fd5b61019161089f565b604051901515815260200160405180910390f35b341561032757600080fd5b61016d600160a060020a03600435166108af565b005b341561034857600080fd5b61035061092d565b604051600160a060020a03909116815260200160405180910390f35b341561037757600080fd5b610191600160a060020a03600435166001608060020a036024351661093c565b604051901515815260200160405180910390f35b34156103b657600080fd5b61035061095b565b604051600160a060020a03909116815260200160405180910390f35b34156103e557600080fd5b61016d6001608060020a036004351661096a565b005b341561040657600080fd5b610148610a5d565b60405190815260200160405180910390f35b341561042b57600080fd5b610191600160a060020a0360043516602435610a63565b604051901515815260200160405180910390f35b341561046157600080fd5b61016d610aea565b005b341561047657600080fd5b610350610b83565b604051600160a060020a03909116815260200160405180910390f35b34156104a557600080fd5b610148600160a060020a0360043581169060243516610b92565b60405190815260200160405180910390f35b34156104dc57600080fd5b610191600160a060020a0360043516602435610bbf565b604051901515815260200160405180910390f35b60085481565b61052b61052633600035600160e060020a031916610c4a565b610d5f565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a46004805474ff0000000000000000000000000000000000000000191660a060020a1790555b5b50505b565b6004546000906105c69060a060020a900460ff1615610d5f565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a46106268585610d6f565b92505b5b50505b92915050565b61065161052633600035600160e060020a031916610c4a565b610d5f565b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038381169190911791829055167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a25b5b50565b6000545b90565b6004546000906106d29060a060020a900460ff1615610d5f565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a4610733868686610ddc565b92505b5b50505b9392505050565b60065481565b600061075c83836001608060020a0316610a63565b90505b92915050565b61078361052633600035600160e060020a031916610c4a565b610d5f565b60088190555b5b50565b6107ab61052633600035600160e060020a031916610c4a565b610d5f565b6004546107c29060a060020a900460ff1615610d5f565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a4600160a060020a033316600090815260016020526040902054610844906001608060020a038516610f33565b600160a060020a03331660009081526001602052604081209190915554610874906001608060020a038516610f33565b6000555b5b50505b5b50565b600160a060020a0381166000908152600160205260409020545b919050565b60045460a060020a900460ff1681565b6108cd61052633600035600160e060020a031916610c4a565b610d5f565b6003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038381169190911791829055167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a25b5b50565b600754600160a060020a031681565b600061075c8333846001608060020a03166106b8565b90505b92915050565b600454600160a060020a031681565b61098861052633600035600160e060020a031916610c4a565b610d5f565b60045461099f9060a060020a900460ff1615610d5f565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a4600160a060020a033316600090815260016020526040902054610a21906001608060020a038516610f47565b600160a060020a03331660009081526001602052604081209190915554610874906001608060020a038516610f47565b6000555b5b50505b5b50565b60055481565b600454600090610a7d9060a060020a900460ff1615610d5f565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a46106268585610f5b565b92505b5b50505b92915050565b610b0861052633600035600160e060020a031916610c4a565b610d5f565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a46004805474ff0000000000000000000000000000000000000000191690555b5b50505b565b600354600160a060020a031681565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b60075460009033600160a060020a03908116911614610a7d57600080fd5b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a46106268585610f5b565b92505b5b50505b92915050565b600030600160a060020a031683600160a060020a03161415610c6e5750600161062d565b600454600160a060020a0384811691161415610c8c5750600161062d565b600354600160a060020a03161515610ca65750600061062d565b600354600160a060020a031663b70096138430856000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8616028152600160a060020a039384166004820152919092166024820152600160e060020a03199091166044820152606401602060405180830381600087803b1515610d3457600080fd5b6102c65a03f11515610d4557600080fd5b50505060405180519050905061062d565b5b5b5b92915050565b8015156106ad57600080fd5b5b50565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b600160a060020a03831660009081526001602052604081205482901015610dff57fe5b600160a060020a038085166000908152600260209081526040808320339094168352929052205482901015610e3057fe5b600160a060020a0380851660009081526002602090815260408083203390941683529290522054610e619083610f47565b600160a060020a038086166000818152600260209081526040808320339095168352938152838220949094559081526001909252902054610ea29083610f47565b600160a060020a038086166000908152600160205260408082209390935590851681522054610ed19083610f33565b600160a060020a03808516600081815260016020526040908190209390935591908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b9392505050565b8082018281101561062d57fe5b5b92915050565b8082038281111561062d57fe5b5b92915050565b600160a060020a03331660009081526001602052604081205482901015610f7e57fe5b600160a060020a033316600090815260016020526040902054610fa19083610f47565b600160a060020a033381166000908152600160205260408082209390935590851681522054610fd09083610f33565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b929150505600a165627a7a7230582050172f65273384fedec201087fc8d3faff8b7f7b124c0bb4bae839819326c4bd0029

Verified Source Code Partial Match

Compiler: v0.4.15+commit.bbb8e64f Optimization: Yes (200 runs)
DSToken.sol 443 lines
// Copyright (C) 2017 DappHub, LLC

pragma solidity ^0.4.11;

//import "ds-exec/exec.sol";

contract DSExec {
    function tryExec( address target, bytes calldata, uint value)
    internal
    returns (bool call_ret)
    {
        return target.call.value(value)(calldata);
    }
    function exec( address target, bytes calldata, uint value)
    internal
    {
        if(!tryExec(target, calldata, value)) {
            throw;
        }
    }

    // Convenience aliases
    function exec( address t, bytes c )
    internal
    {
        exec(t, c, 0);
    }
    function exec( address t, uint256 v )
    internal
    {
        bytes memory c; exec(t, c, v);
    }
    function tryExec( address t, bytes c )
    internal
    returns (bool)
    {
        return tryExec(t, c, 0);
    }
    function tryExec( address t, uint256 v )
    internal
    returns (bool)
    {
        bytes memory c; return tryExec(t, c, v);
    }
}

//import "ds-auth/auth.sol";
contract DSAuthority {
    function canCall(
    address src, address dst, bytes4 sig
    ) constant returns (bool);
}

contract DSAuthEvents {
    event LogSetAuthority (address indexed authority);
    event LogSetOwner     (address indexed owner);
}

contract DSAuth is DSAuthEvents {
    DSAuthority  public  authority;
    address      public  owner;

    function DSAuth() {
        owner = msg.sender;
        LogSetOwner(msg.sender);
    }

    function setOwner(address owner_)
    auth
    {
        owner = owner_;
        LogSetOwner(owner);
    }

    function setAuthority(DSAuthority authority_)
    auth
    {
        authority = authority_;
        LogSetAuthority(authority);
    }

    modifier auth {
        assert(isAuthorized(msg.sender, msg.sig));
        _;
    }

    function isAuthorized(address src, bytes4 sig) internal returns (bool) {
        if (src == address(this)) {
            return true;
        } else if (src == owner) {
            return true;
        } else if (authority == DSAuthority(0)) {
            return false;
        } else {
            return authority.canCall(src, this, sig);
        }
    }

    function assert(bool x) internal {
        if (!x) throw;
    }
}

//import "ds-note/note.sol";
contract DSNote {
    event LogNote(
    bytes4   indexed  sig,
    address  indexed  guy,
    bytes32  indexed  foo,
    bytes32  indexed  bar,
    uint        wad,
    bytes             fax
    ) anonymous;

    modifier note {
        bytes32 foo;
        bytes32 bar;

        assembly {
        foo := calldataload(4)
        bar := calldataload(36)
        }

        LogNote(msg.sig, msg.sender, foo, bar, msg.value, msg.data);

        _;
    }
}


//import "ds-math/math.sol";
contract DSMath {

    /*
    standard uint256 functions
     */

    function add(uint256 x, uint256 y) constant internal returns (uint256 z) {
        assert((z = x + y) >= x);
    }

    function sub(uint256 x, uint256 y) constant internal returns (uint256 z) {
        assert((z = x - y) <= x);
    }

    function mul(uint256 x, uint256 y) constant internal returns (uint256 z) {
        z = x * y;
        assert(x == 0 || z / x == y);
    }

    function div(uint256 x, uint256 y) constant internal returns (uint256 z) {
        z = x / y;
    }

    function min(uint256 x, uint256 y) constant internal returns (uint256 z) {
        return x <= y ? x : y;
    }
    function max(uint256 x, uint256 y) constant internal returns (uint256 z) {
        return x >= y ? x : y;
    }

    /*
    uint128 functions (h is for half)
     */


    function hadd(uint128 x, uint128 y) constant internal returns (uint128 z) {
        assert((z = x + y) >= x);
    }

    function hsub(uint128 x, uint128 y) constant internal returns (uint128 z) {
        assert((z = x - y) <= x);
    }

    function hmul(uint128 x, uint128 y) constant internal returns (uint128 z) {
        z = x * y;
        assert(x == 0 || z / x == y);
    }

    function hdiv(uint128 x, uint128 y) constant internal returns (uint128 z) {
        z = x / y;
    }

    function hmin(uint128 x, uint128 y) constant internal returns (uint128 z) {
        return x <= y ? x : y;
    }
    function hmax(uint128 x, uint128 y) constant internal returns (uint128 z) {
        return x >= y ? x : y;
    }


    /*
    int256 functions
     */

    function imin(int256 x, int256 y) constant internal returns (int256 z) {
        return x <= y ? x : y;
    }
    function imax(int256 x, int256 y) constant internal returns (int256 z) {
        return x >= y ? x : y;
    }

    /*
    WAD math
     */

    uint128 constant WAD = 10 ** 18;

    function wadd(uint128 x, uint128 y) constant internal returns (uint128) {
        return hadd(x, y);
    }

    function wsub(uint128 x, uint128 y) constant internal returns (uint128) {
        return hsub(x, y);
    }

    function wmul(uint128 x, uint128 y) constant internal returns (uint128 z) {
        z = cast((uint256(x) * y + WAD / 2) / WAD);
    }

    function wdiv(uint128 x, uint128 y) constant internal returns (uint128 z) {
        z = cast((uint256(x) * WAD + y / 2) / y);
    }

    function wmin(uint128 x, uint128 y) constant internal returns (uint128) {
        return hmin(x, y);
    }
    function wmax(uint128 x, uint128 y) constant internal returns (uint128) {
        return hmax(x, y);
    }

    /*
    RAY math
     */

    uint128 constant RAY = 10 ** 27;

    function radd(uint128 x, uint128 y) constant internal returns (uint128) {
        return hadd(x, y);
    }

    function rsub(uint128 x, uint128 y) constant internal returns (uint128) {
        return hsub(x, y);
    }

    function rmul(uint128 x, uint128 y) constant internal returns (uint128 z) {
        z = cast((uint256(x) * y + RAY / 2) / RAY);
    }

    function rdiv(uint128 x, uint128 y) constant internal returns (uint128 z) {
        z = cast((uint256(x) * RAY + y / 2) / y);
    }

    function rpow(uint128 x, uint64 n) constant internal returns (uint128 z) {
        // This famous algorithm is called "exponentiation by squaring"
        // and calculates x^n with x as fixed-point and n as regular unsigned.
        //
        // It's O(log n), instead of O(n) for naive repeated multiplication.
        //
        // These facts are why it works:
        //
        //  If n is even, then x^n = (x^2)^(n/2).
        //  If n is odd,  then x^n = x * x^(n-1),
        //   and applying the equation for even x gives
        //    x^n = x * (x^2)^((n-1) / 2).
        //
        //  Also, EVM division is flooring and
        //    floor[(n-1) / 2] = floor[n / 2].

        z = n % 2 != 0 ? x : RAY;

        for (n /= 2; n != 0; n /= 2) {
            x = rmul(x, x);

            if (n % 2 != 0) {
                z = rmul(z, x);
            }
        }
    }

    function rmin(uint128 x, uint128 y) constant internal returns (uint128) {
        return hmin(x, y);
    }
    function rmax(uint128 x, uint128 y) constant internal returns (uint128) {
        return hmax(x, y);
    }

    function cast(uint256 x) constant internal returns (uint128 z) {
        assert((z = uint128(x)) == x);
    }

}

//import "erc20/erc20.sol";
contract ERC20 {
    function totalSupply() constant returns (uint supply);
    function balanceOf( address who ) constant returns (uint value);
    function allowance( address owner, address spender ) constant returns (uint _allowance);

    function transfer( address to, uint value) returns (bool ok);
    function transferFrom( address from, address to, uint value) returns (bool ok);
    function approve( address spender, uint value ) returns (bool ok);

    event Transfer( address indexed from, address indexed to, uint value);
    event Approval( address indexed owner, address indexed spender, uint value);
}



//import "ds-token/base.sol";
contract DSTokenBase is ERC20, DSMath {
    uint256                                            _supply;
    mapping (address => uint256)                       _balances;
    mapping (address => mapping (address => uint256))  _approvals;

    function DSTokenBase(uint256 supply) {
        _balances[msg.sender] = supply;
        _supply = supply;
    }

    function totalSupply() constant returns (uint256) {
        return _supply;
    }
    function balanceOf(address src) constant returns (uint256) {
        return _balances[src];
    }
    function allowance(address src, address guy) constant returns (uint256) {
        return _approvals[src][guy];
    }

    function transfer(address dst, uint wad) returns (bool) {
        assert(_balances[msg.sender] >= wad);

        _balances[msg.sender] = sub(_balances[msg.sender], wad);
        _balances[dst] = add(_balances[dst], wad);

        Transfer(msg.sender, dst, wad);

        return true;
    }

    function transferFrom(address src, address dst, uint wad) returns (bool) {
        assert(_balances[src] >= wad);
        assert(_approvals[src][msg.sender] >= wad);

        _approvals[src][msg.sender] = sub(_approvals[src][msg.sender], wad);
        _balances[src] = sub(_balances[src], wad);
        _balances[dst] = add(_balances[dst], wad);

        Transfer(src, dst, wad);

        return true;
    }

    function approve(address guy, uint256 wad) returns (bool) {
        _approvals[msg.sender][guy] = wad;

        Approval(msg.sender, guy, wad);

        return true;
    }

}


//import "ds-stop/stop.sol";
contract DSStop is DSAuth, DSNote {

    bool public stopped;

    modifier stoppable {
        assert (!stopped);
        _;
    }
    function stop() auth note {
        stopped = true;
    }
    function start() auth note {
        stopped = false;
    }

}


//import "ds-token/token.sol";
contract DSToken is DSTokenBase(0), DSStop {

    bytes32  public  symbol;
    uint256  public  decimals = 18; // standard token precision. override to customize
    address  public  generator;

    modifier onlyGenerator {
        if(msg.sender!=generator) throw;
        _;
    }

    function DSToken(bytes32 symbol_) {
        symbol = symbol_;
        generator=msg.sender;
    }

    function transfer(address dst, uint wad) stoppable note returns (bool) {
        return super.transfer(dst, wad);
    }
    function transferFrom(
    address src, address dst, uint wad
    ) stoppable note returns (bool) {
        return super.transferFrom(src, dst, wad);
    }
    function approve(address guy, uint wad) stoppable note returns (bool) {
        return super.approve(guy, wad);
    }

    function push(address dst, uint128 wad) returns (bool) {
        return transfer(dst, wad);
    }
    function pull(address src, uint128 wad) returns (bool) {
        return transferFrom(src, msg.sender, wad);
    }

    function mint(uint128 wad) auth stoppable note {
        _balances[msg.sender] = add(_balances[msg.sender], wad);
        _supply = add(_supply, wad);
    }
    function burn(uint128 wad) auth stoppable note {
        _balances[msg.sender] = sub(_balances[msg.sender], wad);
        _supply = sub(_supply, wad);
    }

    // owner can transfer token even stop,
    function generatorTransfer(address dst, uint wad) onlyGenerator note returns (bool) {
        return super.transfer(dst, wad);
    }

    // Optional token name

    bytes32   public  name = "";

    function setName(bytes32 name_) auth {
        name = name_;
    }

}

Write Contract 23 functions

These functions modify contract state and require a wallet transaction to execute.

allowance 0xdd62ed3e
address src
address guy
returns: uint256
approve 0x095ea7b3
address guy
uint256 wad
returns: bool
authority 0xbf7e214f
No parameters
returns: address
balanceOf 0x70a08231
address src
returns: uint256
burn 0x90bc1693
uint128 wad
decimals 0x313ce567
No parameters
returns: uint256
generator 0x7afa1eed
No parameters
returns: address
generatorTransfer 0xe5d4610f
address dst
uint256 wad
returns: bool
mint 0x69d3e20e
uint128 wad
name 0x06fdde03
No parameters
returns: bytes32
owner 0x8da5cb5b
No parameters
returns: address
pull 0x8402181f
address src
uint128 wad
returns: bool
push 0x3452f51d
address dst
uint128 wad
returns: bool
setAuthority 0x7a9e5e4b
address authority_
setName 0x5ac801fe
bytes32 name_
setOwner 0x13af4035
address owner_
start 0xbe9a6555
No parameters
stop 0x07da68f5
No parameters
stopped 0x75f12b21
No parameters
returns: bool
symbol 0x95d89b41
No parameters
returns: bytes32
totalSupply 0x18160ddd
No parameters
returns: uint256
transfer 0xa9059cbb
address dst
uint256 wad
returns: bool
transferFrom 0x23b872dd
address src
address dst
uint256 wad
returns: bool

Recent Transactions

No transactions found for this address