Dai Stablecoin
ERC20
This contract is an ERC20 token.
                Name
                
                        Dai Stablecoin
                
            
            
                Symbol
                DAI
            
            
                Decimals
                18
            
            
                Total Supply
                588,365,354 DAI
            
            
            
        
                About
                    
                        link
                    
                     
            
            
                Dai (DAI) is a cryptocurrency and operates on the Ethereum platform. Dai has a current supply of 5,493,645,892.859368 with 5,493,645,404.020224 in circulation. The last known price of Dai is 1.00038056 USD and is down -0.02 over the last 24 hours. It is currently trading on 393 active market(s) with $335,165,861.39 traded over the last 24 hours. More information can be found at http://www.makerdao.com/.
            
        Stats
                Public Functions
                11
            
            
                Event Types
                3
            
            
                Code Size
                7,965 bytes
            
        Events (3) keyboard_arrow_up
State Variables (6) keyboard_arrow_up
Functions
rely keyboard_arrow_up
Modifiers help
note checks for the following:
auth checks for the following:
Source Code
function rely(address guy) external note auth {
  wards[guy] = 1;
}
deny keyboard_arrow_up
Modifiers help
note checks for the following:
auth checks for the following:
Source Code
function deny(address guy) external note auth {
  wards[guy] = 0;
}
transfer keyboard_arrow_up
Requirements help
Source Code
function transfer(address dst, uint256 wad) external returns (bool) {
  return transferFrom(msg.sender, dst, wad);
}
transferFrom keyboard_arrow_up
Requirements help
Source Code
function transferFrom(
  address src,
  address dst,
  uint256 wad
) public returns (bool) {
  require(balanceOf[src] >= wad, "Dai/insufficient-balance");
  if (src != msg.sender && allowance[src][msg.sender] != uint256(-1)) {
    require(allowance[src][msg.sender] >= wad, "Dai/insufficient-allowance");
    allowance[src][msg.sender] = sub(allowance[src][msg.sender], wad);
  }
  balanceOf[src] = sub(balanceOf[src], wad);
  balanceOf[dst] = add(balanceOf[dst], wad);
  emit Transfer(src, dst, wad);
  return true;
}
mint keyboard_arrow_up
Modifiers help
auth checks for the following:
Source Code
function mint(address usr, uint256 wad) external auth {
  balanceOf[usr] = add(balanceOf[usr], wad);
  totalSupply = add(totalSupply, wad);
  emit Transfer(address(0), usr, wad);
}
burn keyboard_arrow_up
Source Code
function burn(address usr, uint256 wad) external {
  require(balanceOf[usr] >= wad, "Dai/insufficient-balance");
  if (usr != msg.sender && allowance[usr][msg.sender] != uint256(-1)) {
    require(allowance[usr][msg.sender] >= wad, "Dai/insufficient-allowance");
    allowance[usr][msg.sender] = sub(allowance[usr][msg.sender], wad);
  }
  balanceOf[usr] = sub(balanceOf[usr], wad);
  totalSupply = sub(totalSupply, wad);
  emit Transfer(usr, address(0), wad);
}
approve keyboard_arrow_up
push keyboard_arrow_up
Requirements help
Source Code
function push(address usr, uint256 wad) external {
  transferFrom(msg.sender, usr, wad);
}
pull keyboard_arrow_up
Requirements help
Source Code
function pull(address usr, uint256 wad) external {
  transferFrom(usr, msg.sender, wad);
}
move keyboard_arrow_up
Requirements help
Source Code
function move(
  address src,
  address dst,
  uint256 wad
) external {
  transferFrom(src, dst, wad);
}
permit keyboard_arrow_up
Parameters help
Requirements help
Source Code
function permit(
  address holder,
  address spender,
  uint256 nonce,
  uint256 expiry,
  bool allowed,
  uint8 v,
  bytes32 r,
  bytes32 s
) external {
  bytes32 digest = keccak256(
    abi.encodePacked(
      "\x19\x01",
      DOMAIN_SEPARATOR,
      keccak256(
        abi.encode(PERMIT_TYPEHASH, holder, spender, nonce, expiry, allowed)
      )
    )
  );
  require(holder != address(0), "Dai/invalid-address-0");
  require(holder == ecrecover(digest, v, r, s), "Dai/invalid-permit");
  require(expiry == 0 || now <= expiry, "Dai/permit-expired");
  require(nonce == nonces[holder]++, "Dai/invalid-nonce");
  uint256 wad = allowed ? uint256(-1) : 0;
  allowance[holder][spender] = wad;
  emit Approval(holder, spender, wad);
}
Internal Functions
Internal functions are parts of the contract that can't be used directly, but instead are used by the public functions listed above.
 
         
    



