Address Contract Partially Verified
Address
0x4Cd988AfBad37289BAAf53C13e98E2BD46aAEa8c
Balance
0 ETH
Nonce
1
Code Size
4190 bytes
Creator
0x6B625e36...505A at tx 0xccc48389...1b9c23
Indexed Transactions
0
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