Address
0xcd2828fc4d8e8a0ede91bb38cf64b1a81de65bf6Current Holdings
$0.00
TXs sent
not counted
First Active
2023-05-13
block 17,254,314
Last Active
230 days ago
block 25,671,024
Funded By
not identified
Net worth historyi
2 snapshots · to block 27,427,935coverage change 26 Augcoverage change 27 Augcoverage change 27 Augcoverage change 27 Augcoverage change 27 Aug
exact matchOddzTokensolc 0.7.4+commit.3f05b770runtime exact · creation exact
// SPDX-License-Identifier: BSD-4-Clause
pragma solidity ^0.7.0;
import { ERC20, IERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol";
import { ERC20Permit } from "@openzeppelin/contracts/drafts/ERC20Permit.sol";
import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/SafeERC20.sol";
/**
* @title Oddz Token
* @dev Oddz ERC20 Token
*/
contract OddzToken is ERC20, ERC20Permit, Ownable {
using SafeERC20 for IERC20;
event RescueTokens(address indexed token, address indexed destination, uint256 indexed amount);
constructor(
string memory name,
string memory symbol,
uint256 totalSupply
) public ERC20(name, symbol) ERC20Permit(name) {
_mint(msg.sender, totalSupply * (10**decimals()));
}
/**
* @notice Function to rescue funds
* Owner is assumed to be governance or Oddz trusted party for helping users
* Function can be disabled by destroying ownership via `renounceOwnership` function
* @param token Address of token to be rescued
* @param destination User address
* @param amount Amount of tokens
*/
function rescueTokens(
address token,
address destination,
uint256 amount
) external onlyOwner {
require(token != destination, "Invalid address");
IERC20(token).safeTransfer(destination, amount);
emit RescueTokens(token, destination, amount);
}
}