Blockwell

DMarket Token

ERC20

This contract is an ERC20 token.

Name DMarket Token
Symbol DMT
Decimals 8
Total Supply 56,921,773 DMT

About link description

DMarket (DMT) is a cryptocurrency and operates on the Ethereum platform. DMarket has a current supply of 56,921,773.1719715 with 56,921,773.17195558 in circulation. The last known price of DMarket is 0.01247355 USD and is down -3.19 over the last 24 hours. It is currently trading on 3 active market(s) with $1,046.57 traded over the last 24 hours. More information can be found at https://dmarket.com/.

Stats

Public Functions 12
Event Types 5
Code Size 11,751 bytes

Events (5) keyboard_arrow_up

Approval Event

Parameters help
owner
address help
spender
address help
value
uint256 help

Mint Event

Parameters help
to
address help
amount
uint256 help

OwnershipTransferred Event

Parameters help
previousOwner
address help
newOwner
address help

Transfer Event

Parameters help
from
address help
to
address help
value
uint256 help

VestingMemberAdded Event

Parameters help
_address
address help
_amount
uint256 help
_start
uint help
_end
uint help

name Variable

string help

symbol Variable

string help

decimals Variable

uint256 help

hardCap Variable

uint256 help

totalSupply Variable

uint256 help

owner Variable

address help

balances Variable

mapping(address => uint256) help

vestingMembers Variable

mapping(address => _Vesting) help
Internal Variable

allowed Variable

mapping(address => mapping(address => uint256)) help
Internal Variable

Functions Expand All Collapse All

transferOwnership keyboard_arrow_up

Parameters help

Name Type
newOwner
address help

Properties

Visibility help public
Mutability help transaction

Requirements help

Source Code
function transferOwnership(address newOwner) public onlyOwner {
  require(newOwner != address(0));
  OwnershipTransferred(owner, newOwner);
  owner = newOwner;
}

Parameters help

Name Type
_owner
address help

Properties

Visibility help public
Mutability help constant
Source Code
function balanceOf(address _owner) public constant returns (uint256 balance) {
  if (vestingMembers[_owner].totalSum == 0) {
    return balances[_owner];
  } else {
    return balances[_owner].add(currentPart(_owner));
  }
}

Parameters help

Name Type
_to
address help
_value
uint256 help

Properties

Visibility help public
Mutability help transaction
Source Code
function transfer(address _to, uint256 _value) public returns (bool) {
  require(_to != address(0));
  require(_value <= balanceOf(msg.sender));

  subFromBalance(msg.sender, _value);

  balances[_to] = balances[_to].add(_value);
  Transfer(msg.sender, _to, _value);
  return true;
}

Parameters help

Name Type
_owner
address help
_spender
address help

Properties

Visibility help public
Mutability help constant
Source Code
function allowance(address _owner, address _spender)
  public
  constant
  returns (uint256 remaining)
{
  return allowed[_owner][_spender];
}

Parameters help

Name Type
_from
address help
_to
address help
_value
uint256 help

Properties

Visibility help public
Mutability help transaction
Source Code
function transferFrom(
  address _from,
  address _to,
  uint256 _value
) public returns (bool) {
  require(_to != address(0));

  uint256 _allowance = allowed[_from][msg.sender];

  subFromBalance(_from, _value);

  balances[_to] = balances[_to].add(_value);
  allowed[_from][msg.sender] = _allowance.sub(_value);
  Transfer(_from, _to, _value);
  return true;
}

Parameters help

Name Type
_spender
address help
_value
uint256 help

Properties

Visibility help public
Mutability help transaction
Source Code
function approve(address _spender, uint256 _value) public returns (bool) {
  allowed[msg.sender][_spender] = _value;
  Approval(msg.sender, _spender, _value);
  return true;
}

increaseApproval keyboard_arrow_up

Parameters help

Name Type
_spender
address help
_addedValue
uint help

Properties

Visibility help public
Mutability help transaction
Source Code
function increaseApproval(address _spender, uint256 _addedValue)
  public
  returns (bool success)
{
  allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(
    _addedValue
  );
  Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
  return true;
}

decreaseApproval keyboard_arrow_up

Parameters help

Name Type
_spender
address help
_subtractedValue
uint help

Properties

Visibility help public
Mutability help transaction
Source Code
function decreaseApproval(address _spender, uint256 _subtractedValue)
  public
  returns (bool success)
{
  uint256 oldValue = allowed[msg.sender][_spender];
  if (_subtractedValue > oldValue) {
    allowed[msg.sender][_spender] = 0;
  } else {
    allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
  }
  Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
  return true;
}

mint keyboard_arrow_up

Parameters help

Name Type
_to
address help
_amount
uint256 help

Properties

Visibility help public
Mutability help transaction
Source Code
function mint(address _to, uint256 _amount)
  public
  onlyOwner
  canMint
  returns (bool)
{
  require(_amount < hardCap);
  totalSupply = totalSupply.add(_amount);
  balances[_to] = balances[_to].add(_amount);
  Mint(_to, _amount);
  Transfer(0x0, _to, _amount);
  return true;
}

addVestingMember keyboard_arrow_up

Parameters help

Name Type
_address
address help
_amount
uint256 help
_start
uint256 help
_end
uint256 help

Properties

Visibility help public
Mutability help transaction
Source Code
function addVestingMember(
  address _address,
  uint256 _amount,
  uint256 _start,
  uint256 _end
) public onlyOwner returns (bool) {
  require(
    _address != address(0) &&
      _amount > 0 &&
      _start < _end &&
      vestingMembers[_address].totalSum == 0 &&
      balances[msg.sender] > _amount
  );

  balances[msg.sender] = balances[msg.sender].sub(_amount);

  vestingMembers[_address].totalSum = _amount; //total amount
  vestingMembers[_address].start = _start; //start block
  vestingMembers[_address].end = _end; //end block
  vestingMembers[_address].usedAmount = 0; //the amount of paid payments

  VestingMemberAdded(_address, _amount, _start, _end);

  return true;
}

multiTransfer keyboard_arrow_up

Parameters help

Name Type
recipients
address[] help
amounts
uint256[] help

Properties

Visibility help public
Mutability help transaction
Source Code
function multiTransfer(address[] recipients, uint256[] amounts) public {
  require(recipients.length == amounts.length);
  for (uint256 i = 0; i < recipients.length; i++) {
    transfer(recipients[i], amounts[i]);
  }
}

multiVesting keyboard_arrow_up

Parameters help

Name Type
_address
address[] help
_amount
uint256[] help
_start
uint256[] help
_end
uint256[] help

Properties

Visibility help public
Mutability help transaction
Source Code
function multiVesting(
  address[] _address,
  uint256[] _amount,
  uint256[] _start,
  uint256[] _end
) public onlyOwner {
  require(
    _address.length == _amount.length &&
      _address.length == _start.length &&
      _address.length == _end.length
  );
  for (uint256 i = 0; i < _address.length; i++) {
    addVestingMember(_address[i], _amount[i], _start[i], _end[i]);
  }
}

Internal Functions Expand All Collapse All

Internal functions are parts of the contract that can't be used directly, but instead are used by the public functions listed above.

internal Vesting.currentPart keyboard_arrow_up

Parameters help

Name Type
_address
address help

Properties

Visibility help private
Mutability help constant
Source Code
function currentPart(address _address) private constant returns (uint256) {
  if (
    vestingMembers[_address].totalSum == 0 ||
    block.number <= vestingMembers[_address].start
  ) {
    return 0;
  }
  if (block.number >= vestingMembers[_address].end) {
    return
      vestingMembers[_address].totalSum.sub(
        vestingMembers[_address].usedAmount
      );
  }

  return
    vestingMembers[_address]
      .totalSum
      .mul(block.number - vestingMembers[_address].start)
      .div(vestingMembers[_address].end - vestingMembers[_address].start)
      .sub(vestingMembers[_address].usedAmount);
}

internal Vesting.subFromBalance keyboard_arrow_up

Parameters help

Name Type
_address
address help
_amount
uint256 help

Properties

Visibility help private
Mutability help transaction
Source Code
function subFromBalance(address _address, uint256 _amount)
  private
  returns (uint256)
{
  require(_address != address(0));

  if (vestingMembers[_address].totalSum == 0) {
    balances[_address] = balances[_address].sub(_amount);
    return balances[_address];
  }
  uint256 summary = balanceOf(_address);
  require(summary >= _amount);

  if (balances[_address] > _amount) {
    balances[_address] = balances[_address].sub(_amount);
  } else {
    uint256 part = currentPart(_address);
    if (block.number >= vestingMembers[_address].end) {
      vestingMembers[_address].totalSum = 0; //total amount
      vestingMembers[_address].start = 0; //start block
      vestingMembers[_address].end = 0; //end block
      vestingMembers[_address].usedAmount = 0; //the amount of paid payments
    } else {
      vestingMembers[_address].usedAmount = vestingMembers[_address]
      .usedAmount
      .add(part);
    }
    balances[_address] = balances[_address].add(part).sub(_amount);
  }

  return balances[_address];
}