Address Contract Verified
Address
0x7461C43bb1E96863233D72A09191008ee9217Ee8
Balance
0 ETH
Nonce
1
Code Size
2219 bytes
Creator
0xfc788E41...35b6 at tx 0xcfd0d1a5...6b9410
Indexed Transactions
1 (24,448,854 → 24,448,854)
Gas Used (indexed)
46,081
Contract Bytecode
2219 bytes
0x608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a08231146101d65780638da5cb5b146101fc57806395d89b4114610220578063a9059cbb14610228578063dd62ed3e14610254578063f2fde38b14610282576100b4565b806306fdde03146100b9578063095ea7b3146101365780630eb347401461017657806318160ddd1461019057806323b872dd14610198578063313ce567146101ce575b600080fd5b6100c16102aa565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100fb5781810151838201526020016100e3565b50505050905090810190601f1680156101285780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101626004803603604081101561014c57600080fd5b506001600160a01b038135169060200135610335565b604080519115158252519081900360200190f35b61017e61039c565b60408051918252519081900360200190f35b61017e6103a2565b610162600480360360608110156101ae57600080fd5b506001600160a01b038135811691602081013590911690604001356103a8565b61017e610540565b61017e600480360360208110156101ec57600080fd5b50356001600160a01b0316610546565b610204610561565b604080516001600160a01b039092168252519081900360200190f35b6100c1610570565b6101626004803603604081101561023e57600080fd5b506001600160a01b0381351690602001356105ca565b61017e6004803603604081101561026a57600080fd5b506001600160a01b0381358116916020013516610709565b6102a86004803603602081101561029857600080fd5b50356001600160a01b0316610734565b005b6002805460408051602060018416156101000260001901909316849004601f8101849004840282018401909252818152929183018282801561032d5780601f106103025761010080835404028352916020019161032d565b820191906000526020600020905b81548152906001019060200180831161031057829003601f168201915b505050505081565b3360008181526009602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b60055481565b60045490565b60006103b2610796565b6001600160a01b03841660009081526009602090815260408083203384529091529020548211156103e257600080fd5b6001600160a01b03841660009081526008602052604090205482111561040757600080fd5b6000546001600160a01b0385811691161415610445576005543360009081526008602052604090205461043a9084610814565b101561044557600080fd5b6001600160a01b0384166000908152600860205260409020546104689083610814565b6001600160a01b0380861660009081526008602052604080822093909355908516815220546104979083610826565b6001600160a01b0380851660009081526008602090815260408083209490945591871681526009825282812033825290915220546104d59083610814565b6001600160a01b03808616600081815260096020908152604080832033845282529182902094909455805186815290519287169391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a35060019392505050565b60035481565b6001600160a01b031660009081526008602052604090205490565b6000546001600160a01b031681565b60018054604080516020600284861615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561032d5780601f106103025761010080835404028352916020019161032d565b60006105d4610796565b6001600160a01b0383166105e757600080fd5b3360009081526008602052604090205482111561060357600080fd5b6001600160a01b038316600090815260086020526040902054828101101561062a57600080fd5b6000546001600160a01b0316331415610665576005543360009081526008602052604090205461065a9084610814565b101561066557600080fd5b3360009081526008602052604090205461067f9083610814565b33600090815260086020526040808220929092556001600160a01b038516815220546106ab9083610826565b6001600160a01b0384166000818152600860209081526040918290209390935580518581529051919233927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a350600192915050565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b6000546001600160a01b0316331461074b57600080fd5b600080546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b600062ed4e00905060006107bf826107b96006544261081490919063ffffffff16565b9061083c565b90506007548111156108105760006107f6600354600a0a6203d090026107f06007548561081490919063ffffffff16565b90610851565b6005549091506108069082610814565b6005555060078190555b5050565b60008282111561082057fe5b50900390565b60008282018381101561083557fe5b9392505050565b60008082848161084857fe5b04949350505050565b60008261086057506000610396565b8282028284828161086d57fe5b041461083557fefea2646970667358221220692702e5d022acfca4f3f561088a15fdedc52d7b488b0f07a71efe323a7243e164736f6c634300060c0033
Verified Source Code Full Match
Compiler: v0.6.12+commit.27d51765
EVM: istanbul
Optimization: Yes (200 runs)
DGN.sol 146 lines
pragma solidity ^0.6.0;
// SPDX-License-Identifier: UNLICENSED
// ----------------------------------------------------------------------------
// 'Degen Platform' token contract
// Symbol : DGN
// Name : Degen Platform
// Total supply: 25,000,000 (25 million) (20 million unlocked, 5 million are locked which will be unlocked as 250k tokens each month)
// Decimals : 18
// ----------------------------------------------------------------------------
import './SafeMath.sol';
import './ERC20contract.sol';
import './Owned.sol';
// ----------------------------------------------------------------------------
// ERC20 Token, with the addition of symbol, name and decimals and assisted
// token transfers
// ----------------------------------------------------------------------------
contract Token is ERC20Interface, Owned {
using SafeMath for uint256;
string public symbol = "DGN";
string public name = "Degen Platform";
uint256 public decimals = 18;
uint256 _totalSupply = 25e6* 10 ** (decimals); // 25 million
uint256 public lockedTokens;
uint256 _contractStartTime;
uint256 _lastUpdated;
mapping(address => uint256) balances;
mapping(address => mapping(address => uint256)) allowed;
// ------------------------------------------------------------------------
// Constructor
// ------------------------------------------------------------------------
constructor() public {
owner = 0xF9F9F636c8382341206BeB7aD763D3B4b339f1F1;
balances[owner] = totalSupply();
lockedTokens = 5e6 * 10 ** (decimals); // 5 million
_contractStartTime = now;
emit Transfer(address(0),address(owner), totalSupply());
}
/** ERC20Interface function's implementation **/
// ------------------------------------------------------------------------
// Get the total supply of the tokens
// ------------------------------------------------------------------------
function totalSupply() public override view returns (uint256){
return _totalSupply;
}
// ------------------------------------------------------------------------
// Get the token balance for account `tokenOwner`
// ------------------------------------------------------------------------
function balanceOf(address tokenOwner) public override view returns (uint256 balance) {
return balances[tokenOwner];
}
// ------------------------------------------------------------------------
// Transfer the balance from token owner's account to `to` account
// - Owner's account must have sufficient balance to transfer
// - 0 value transfers are allowed
// ------------------------------------------------------------------------
function transfer(address to, uint256 tokens) public override returns (bool success) {
// unlock tokens update
unlockTokens();
// prevent transfer to 0x0, use burn instead
require(address(to) != address(0));
require(balances[msg.sender] >= tokens);
require(balances[to] + tokens >= balances[to]);
if(msg.sender == owner){
require(balances[msg.sender].sub(tokens) >= lockedTokens);
}
balances[msg.sender] = balances[msg.sender].sub(tokens);
balances[to] = balances[to].add(tokens);
emit Transfer(msg.sender,to,tokens);
return true;
}
// ------------------------------------------------------------------------
// Token owner can approve for `spender` to transferFrom(...) `tokens`
// from the token owner's account
// ------------------------------------------------------------------------
function approve(address spender, uint256 tokens) public override returns (bool success){
allowed[msg.sender][spender] = tokens;
emit Approval(msg.sender,spender,tokens);
return true;
}
// ------------------------------------------------------------------------
// Transfer `tokens` from the `from` account to the `to` account
//
// The calling account must already have sufficient tokens approve(...)-d
// for spending from the `from` account and
// - From account must have sufficient balance to transfer
// - Spender must have sufficient allowance to transfer
// - 0 value transfers are allowed
// ------------------------------------------------------------------------
function transferFrom(address from, address to, uint256 tokens) public override returns (bool success){
// unlock tokens update
unlockTokens();
require(tokens <= allowed[from][msg.sender]); //check allowance
require(balances[from] >= tokens);
if(from == owner){
require(balances[msg.sender].sub(tokens) >= lockedTokens);
}
balances[from] = balances[from].sub(tokens);
balances[to] = balances[to].add(tokens);
allowed[from][msg.sender] = allowed[from][msg.sender].sub(tokens);
emit Transfer(from,to,tokens);
return true;
}
// ------------------------------------------------------------------------
// Returns the amount of tokens approved by the owner that can be
// transferred to the spender's account
// ------------------------------------------------------------------------
function allowance(address tokenOwner, address spender) public override view returns (uint256 remaining) {
return allowed[tokenOwner][spender];
}
// ------------------------------------------------------------------------
// Helper function to unlock tokens if applicable
// ------------------------------------------------------------------------
function unlockTokens() internal{
// release tokens from lock, depending on current time
uint256 timeFrame = 180 days; // 6 months
uint256 relativeTimeDifference = (now.sub(_contractStartTime)).div(timeFrame);
if(relativeTimeDifference > _lastUpdated){
uint256 tokensToRelease = (relativeTimeDifference.sub(_lastUpdated)).mul(25e4 * 10 ** (decimals));
lockedTokens = lockedTokens.sub(tokensToRelease);
_lastUpdated = relativeTimeDifference;
}
}
}
Owned.sol 24 lines
// "SPDX-License-Identifier: UNLICENSED "
pragma solidity ^0.6.0;
// ----------------------------------------------------------------------------
// Owned contract
// ----------------------------------------------------------------------------
contract Owned {
address payable public owner;
event OwnershipTransferred(address indexed _from, address indexed _to);
constructor() public {
owner = msg.sender;
}
modifier onlyOwner {
require(msg.sender == owner);
_;
}
function transferOwnership(address payable _newOwner) public onlyOwner {
owner = _newOwner;
emit OwnershipTransferred(msg.sender, _newOwner);
}
}
SafeMath.sol 40 lines
// "SPDX-License-Identifier: UNLICENSED "
pragma solidity ^0.6.0;
/**
* @title SafeMath
* @dev Math operations with safety checks that throw on error
*
*/
library SafeMath {
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
assert(c / a == b);
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
// assert(b > 0); // Solidity automatically throws when dividing by 0
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
assert(b <= a);
return a - b;
}
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
assert(c >= a);
return c;
}
function ceil(uint a, uint m) internal pure returns (uint r) {
return (a + m - 1) / m * m;
}
}
ERC20contract.sol 17 lines
// "SPDX-License-Identifier: UNLICENSED "
pragma solidity ^0.6.0;
// ----------------------------------------------------------------------------
// ERC Token Standard #20 Interface
// https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md
// ----------------------------------------------------------------------------
abstract contract ERC20Interface {
function totalSupply() public virtual view returns (uint);
function balanceOf(address tokenOwner) public virtual view returns (uint256 balance);
function allowance(address tokenOwner, address spender) public virtual view returns (uint256 remaining);
function transfer(address to, uint256 tokens) public virtual returns (bool success);
function approve(address spender, uint256 tokens) public virtual returns (bool success);
function transferFrom(address from, address to, uint256 tokens) public virtual returns (bool success);
event Transfer(address indexed from, address indexed to, uint256 tokens);
event Approval(address indexed tokenOwner, address indexed spender, uint256 tokens);
}
Read Contract
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint256
lockedTokens 0x0eb34740 → uint256
name 0x06fdde03 → string
owner 0x8da5cb5b → address
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
Write Contract 4 functions
These functions modify contract state and require a wallet transaction to execute.
approve 0x095ea7b3
address spender
uint256 tokens
returns: bool
transfer 0xa9059cbb
address to
uint256 tokens
returns: bool
transferFrom 0x23b872dd
address from
address to
uint256 tokens
returns: bool
transferOwnership 0xf2fde38b
address _newOwner
Top Interactions
| Address | Txns | Sent | Received |
|---|---|---|---|
| 0x8813df11...3Ce5 | 1 | 1 |
Recent Transactions
|
| Hash | Block | Age | From/To | Value | |
|---|---|---|---|---|---|
| 0xe2550d2d...fcf8dd | 24,448,854 | IN | 0x8813df11...3Ce5 | 0 ETH |