LoopringCoin V2
ERC20
This contract is an ERC20 token.
Name
LoopringCoin V2
Symbol
LRC
Decimals
18
Total Supply
1,374,513,897 LRC
About
link
description
Loopring (LRC) is an open protocol for scalable non-custodial exchanges on Ethereum. The Loopring protocol smart contracts and zero-knowledge proof circuits allow the building of high-performance DEXes using a zkRollup construction. This allows for higher throughput and lower settlement costs without sacrificing Ethereum-level security guarantees. LRC token can be staked by holders to earn protocol fees, and by DEXes as a bond to follow protocol-defined behaviour.
Stats
Public Functions
13
Event Types
3
Code Size
10,276 bytes
Library Use
Uses SafeMath for uint256.
Events (3) keyboard_arrow_up
Functions
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) {
// if _to is address(0), invoke burn function.
if (_to == address(0)) {
return burn(_value);
}
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);
emit Transfer(msg.sender, _to, _value);
return true;
}
totalBurned keyboard_arrow_up
burn keyboard_arrow_up
Requirements help
Source Code
function burn(uint256 _value) public returns (bool) {
require(_value <= balances[msg.sender]);
address burner = msg.sender;
balances[burner] = balances[burner].sub(_value);
totalSupply_ = totalSupply_.sub(_value);
burnedTotalNum_ = burnedTotalNum_.add(_value);
emit Burn(burner, _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) {
if (_to == address(0)) {
return burnFrom(_from, _value);
}
require(_value <= balances[_from]);
require(_value <= allowed[_from][msg.sender]);
balances[_from] = balances[_from].sub(_value);
balances[_to] = balances[_to].add(_value);
/// an allowance of MAX_UINT represents an unlimited allowance.
/// @dev see https://github.com/ethereum/EIPs/issues/717
if (allowed[_from][msg.sender] < MAX_UINT) {
allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
}
emit 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;
emit Approval(msg.sender, _spender, _value);
return true;
}
burnFrom keyboard_arrow_up
Requirements help
Source Code
function burnFrom(address _owner, uint256 _value) public returns (bool) {
require(_owner != address(0));
require(_value <= balances[_owner]);
require(_value <= allowed[_owner][msg.sender]);
balances[_owner] = balances[_owner].sub(_value);
if (allowed[_owner][msg.sender] < MAX_UINT) {
allowed[_owner][msg.sender] = allowed[_owner][msg.sender].sub(_value);
}
totalSupply_ = totalSupply_.sub(_value);
burnedTotalNum_ = burnedTotalNum_.add(_value);
emit Burn(_owner, _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);
emit 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);
}
emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
return true;
}
batchTransfer keyboard_arrow_up
Requirements help
Source Code
function batchTransfer(address[] calldata accounts, uint256[] calldata amounts)
external
returns (bool)
{
require(accounts.length == amounts.length);
for (uint i = 0; i < accounts.length; i++) {
require(transfer(accounts[i], amounts[i]), "transfer failed");
}
return true;
}