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.