Skip to main content
PulseScanner.io

Address

0xa4c5cf93cbc87b82fba152e0ede4bbc5264c24ef
Current Holdings
$0.00
TXs sent
not counted
First Active
2023-05-13
block 17,250,346
Last Active
240 days ago
block 25,572,391
Funded By
not identified

Net worth historyi

2 snapshots · to block 27,556,731coverage change 26 Augcoverage change 27 Augcoverage change 27 Augcoverage change 27 Augcoverage change 27 Aug
exact matchPLSIOUTokensolc 0.8.7+commit.e28d00a7runtime exact · creation exact
// SPDX-License-Identifier: GPL-3.0

pragma solidity ^0.8.7;

import '@openzeppelin/contracts/token/ERC20/ERC20.sol';
import '@openzeppelin/contracts/access/Ownable.sol';
import '@openzeppelin/contracts/utils/math/SafeMath.sol';

contract PLSIOUToken is ERC20, Ownable {
    using SafeMath for uint256;
    mapping(address => bool) public isWhitelisted;
    bool public isTradingEnabled;
    address public redeemContract;

    constructor(address owner) ERC20('Pulsechain IOU', 'PLSIOU') {
        isWhitelisted[owner] = true;
        _transferOwnership(owner);
        _mint(owner, 1000000000 * 10 ** 18);
    }

    function mint(address to, uint256 amount) external onlyOwner {
        _mint(to, amount);
    }

    function burn(uint256 amount) external onlyOwner {
        _burn(msg.sender, amount);
    }

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal view override {
        if (!isTradingEnabled) {
            require(isWhitelisted[from] || isWhitelisted[to], 'Trading disabled');
        }
    }

    function setTradingEnabled(bool value) external onlyOwner {
        isTradingEnabled = value;
    }

    function setWhitelisted(address addr, bool value) external onlyOwner {
        isWhitelisted[addr] = value;
    }

    function setRedeemContract(address addr) external onlyOwner {
        redeemContract = addr;
    }

    function redeemBurn(address addr, uint256 amount) external {
        require(msg.sender == redeemContract, 'only redeem contract');
        _burn(addr, amount);
    }
}