Transaction Hash:
Block:
7120684 at Jan-24-2019 08:56:17 PM +UTC
Transaction Fee:
0.000365337 ETH
$0.78
Gas Used:
52,191 Gas / 7 Gwei
Emitted Events:
| 49 |
ContentsProtocolToken.Transfer( from=[Sender] 0x8ce8c68b890a556baf9b785e9d66fff70d0f24c5, to=0x8941811775f3Ffe2f6DDAA8aA4454126a3e5e894, value=6000000000000000000000 )
|
Account State Difference:
| Address | Before | After | State Difference | ||
|---|---|---|---|---|---|
|
0x52bc44d5...b7d7bE3b5
Miner
| (Nanopool) | 9,254.725363574151330473 Eth | 9,254.725728911151330473 Eth | 0.000365337 | |
| 0x8ce8C68B...70D0F24C5 |
2.199471702675314729 Eth
Nonce: 27855
|
2.199106365675314729 Eth
Nonce: 27856
| 0.000365337 | ||
| 0x9B62513c...0245EA819 |
Execution Trace
ContentsProtocolToken.transfer( to=0x8941811775f3Ffe2f6DDAA8aA4454126a3e5e894, value=6000000000000000000000 ) => ( True )
transfer[ERC20 (ln:95)]
_transfer[ERC20 (ln:96)]sub[ERC20 (ln:138)]add[ERC20 (ln:139)]Transfer[ERC20 (ln:140)]
pragma solidity 0.5.0;
library SafeMath {
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b);
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
require(b > 0);
uint256 c = a / b;
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
require(b <= a);
uint256 c = a - b;
return c;
}
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a);
return c;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
require(b != 0);
return a % b;
}
}
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address who) external view returns (uint256);
function allowance(address owner, address spender)
external view returns (uint256);
function transfer(address to, uint256 value) external returns (bool);
function approve(address spender, uint256 value)
external returns (bool);
function transferFrom(address from, address to, uint256 value)
external returns (bool);
event Transfer(
address indexed from,
address indexed to,
uint256 value
);
event Approval(
address indexed owner,
address indexed spender,
uint256 value
);
}
contract ERC20 is IERC20 {
using SafeMath for uint256;
mapping (address => uint256) private _balances;
mapping (address => mapping (address => uint256)) private _allowed;
uint256 private _totalSupply;
function totalSupply() public view returns (uint256) {
return _totalSupply;
}
function balanceOf(address owner) public view returns (uint256) {
return _balances[owner];
}
function allowance(address owner, address spender) public view returns (uint256) {
return _allowed[owner][spender];
}
function transfer(address to, uint256 value) public returns (bool) {
_transfer(msg.sender, to, value);
return true;
}
function approve(address spender, uint256 value) public returns (bool) {
require(spender != address(0));
_allowed[msg.sender][spender] = value;
emit Approval(msg.sender, spender, value);
return true;
}
function transferFrom(address from, address to, uint256 value) public returns (bool) {
require(value <= _allowed[from][msg.sender]);
_allowed[from][msg.sender] = _allowed[from][msg.sender].sub(value);
_transfer(from, to, value);
return true;
}
function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
require(spender != address(0));
_allowed[msg.sender][spender] = (
_allowed[msg.sender][spender].add(addedValue));
emit Approval(msg.sender, spender, _allowed[msg.sender][spender]);
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
require(spender != address(0));
_allowed[msg.sender][spender] = (
_allowed[msg.sender][spender].sub(subtractedValue));
emit Approval(msg.sender, spender, _allowed[msg.sender][spender]);
return true;
}
function _transfer(address from, address to, uint256 value) internal {
require(to != address(0));
require(value <= _balances[from]);
_balances[from] = _balances[from].sub(value);
_balances[to] = _balances[to].add(value);
emit Transfer(from, to, value);
}
function _mint(address account, uint256 value) internal {
require(account != address(0));
_totalSupply = _totalSupply.add(value);
_balances[account] = _balances[account].add(value);
emit Transfer(address(0), account, value);
}
function _burn(address account, uint256 value) internal {
require(account != address(0));
require(value <= _balances[account]);
_totalSupply = _totalSupply.sub(value);
_balances[account] = _balances[account].sub(value);
emit Transfer(account, address(0), value);
}
function _burnFrom(address account, uint256 value) internal {
require(value <= _allowed[account][msg.sender]);
_allowed[account][msg.sender] = _allowed[account][msg.sender].sub(value);
_burn(account, value);
}
}
contract Ownable {
address private _owner;
event OwnershipTransferred(
address indexed previousOwner,
address indexed newOwner
);
constructor() internal {
_owner = msg.sender;
emit OwnershipTransferred(address(0), _owner);
}
function owner() public view returns(address) {
return _owner;
}
modifier onlyOwner() {
require(isOwner());
_;
}
function isOwner() public view returns(bool) {
return msg.sender == _owner;
}
function transferOwnership(address newOwner) public onlyOwner {
_transferOwnership(newOwner);
}
function _transferOwnership(address newOwner) internal {
require(newOwner != address(0));
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
contract ContentsProtocolToken is ERC20, Ownable {
using SafeMath for uint256;
uint256 private constant INITIAL_SUPPLY = 10000000000;
string public constant name = "Contents Protocol Token";
string public constant symbol = "CPT";
uint8 public constant decimals = 18;
constructor() public {
uint256 initialSupply = INITIAL_SUPPLY * (10 ** uint256(decimals));
require(initialSupply > 0);
_mint(msg.sender, initialSupply);
}
function mint(uint256 value) public onlyOwner returns (bool) {
_mint(msg.sender, value);
return true;
}
function burn(uint256 value) public onlyOwner returns (bool) {
_burn(msg.sender, value);
return true;
}
// don't accept eth
function () external payable {
if (msg.value > 0) {
revert();
}
}
}