ERC20
This contract is an ERC20 token.
Name
0chain
Symbol
ZCN
Decimals
10
Total Supply
400,000,000 ZCN
About
link
0Chain is a decentralized storage platform providing data privacy, protection, and private sharing. 0Chain aims to help businesses achieve GDPR/CCPA compliance, transparency, and near-zero liability.
Enterprises use 0Chain with the goal of ensuring user ownership, access, and transparency of GDPR regarding consent, data subject rights, records, and security.
Consumers use 0Box instead of Dropbox for privacy, anonymity, and transparency. 0Box is a dApp running on 0Chain.
Crypto enthusiasts use 0Wallet to lock and stake their tokens to earn interest and service rewards. The wallet uses split-key protocol to ensure that assets are safe and easy to use, compared to hardware devices. ZCN is tied to data and is used for storage. The value of ZCN is based on data stored on the network, initially driven by 0Box, and later by developers and enterprises.
Developers use 0Chain dStorage via SDK to protect customer data and provide privacy compliance at a low cost and high performance.
Stats
Public Functions
11
Event Types
5
Code Size
10,366 bytes
Events (5) keyboard_arrow_up
Functions
transferOwnership keyboard_arrow_up
totalSupply keyboard_arrow_up
balanceOf keyboard_arrow_up
transfer keyboard_arrow_up
Requirements help
Source Code
function transfer(address _to, uint256 _value) public returns (bool) {
require(_to != address(0));
require(_value <= balances[msg.sender]);
// SafeMath.sub will throw if there is not enough balance.
balances[msg.sender] = balances[msg.sender].sub(_value);
balances[_to] = balances[_to].add(_value);
Transfer(msg.sender, _to, _value);
return true;
}
allowance keyboard_arrow_up
transferFrom keyboard_arrow_up
Requirements help
Source Code
function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
require(_to != address(0));
require(_value <= balances[_from]);
require(_value <= allowed[_from][msg.sender]);
balances[_from] = balances[_from].sub(_value);
balances[_to] = balances[_to].add(_value);
allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
Transfer(_from, _to, _value);
return true;
}
approve keyboard_arrow_up
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
Source Code
function increaseApproval(address _spender, uint _addedValue) public returns (bool) {
allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
return true;
}
decreaseApproval keyboard_arrow_up
Source Code
function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) {
uint 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
Modifiers help
onlyOwner checks for the following:
canMint checks for the following:
Source Code
function mint(address _to, uint256 _amount) onlyOwner canMint public returns (bool) {
totalSupply_ = totalSupply_.add(_amount);
balances[_to] = balances[_to].add(_amount);
Mint(_to, _amount);
Transfer(address(0), _to, _amount);
return true;
}