ETH Price: $1,796.49 (-1.71%)

Contract

0x1052873Cf28b85ba1797E19D1cEecBAfEdcD8d8D
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

1 Token Transfer found.

Advanced mode:
Parent Transaction Hash Method Block
From
To
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ETHSwap

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity Multiple files format)

File 1 of 2: ethswap.sol
// SPDX-License-Identifier: unlicensed
pragma solidity ^0.8.4;

import "./Shopex.sol";

contract ETHSwap{
    SHOPEXCOIN public token;
    address public owner;
    // uint256 public rate;

    event TokensPurchased(
        address account,
        address token,
        uint amount,
        uint rate
    );

    // event TokensSold(
    //     address account,
    //     address token,
    //     uint amount,
    //     uint rate
    // );


    constructor(SHOPEXCOIN _token) {
        token = _token;
        owner = msg.sender;
    } 

    modifier onlyOwner() {
        require(msg.sender == owner, "Only owner is allowed");
        _;
    }

    function buytokens(uint256 rate) public payable {
        uint tokenAmount = msg.value * rate;
        require(token.balanceOf(address(this)) >= tokenAmount);
        token.transfer(msg.sender, tokenAmount);
        emit TokensPurchased(msg.sender, address(token), tokenAmount, rate);
    }

    function withDrawOwner(uint256 _amount)onlyOwner public returns(bool){
        payable(msg.sender).transfer(_amount);
         return true;
    }

    // function sellTokens(uint _amount) public {
    //     require(token.balanceOf(msg.sender) >= _amount);
    //     uint etherAmount = _amount / rate;
    //     require(address(this).balance >= etherAmount);
    //     token.transferFrom(msg.sender, address(this), _amount);
    //     // msg.sender.transfer(etherAmount);
    //     emit TokensSold(msg.sender, address(token), _amount, rate);
    // }
}


File 2 of 2: Shopex.sol
// SPDX-License-Identifier: unlicensed
pragma solidity 0.8.4;

// ----------------------------------------------------------------------------
// ERC20 Token, with the addition of symbol, name and decimals
// assisted token transfers
// ----------------------------------------------------------------------------
contract SHOPEXCOIN {
    string  public name = "SHOPEX COIN";
    string  public symbol = "SPC";
    uint256 public _totalSupply = 211000000 * 10**18; // 1 million tokens
    uint256  public decimals = 18;
    address public owner;
    bool paused = false;

    mapping(address => uint256) balances;
    mapping(address => mapping(address => uint256)) allowed;

    event Transfer(address indexed from, address indexed to, uint256 tokens);
    event Approval(
        address indexed tokenOwner,
        address indexed spender,
        uint256 tokens
    );
    event Paused(bool isPaused);
    event OwnershipTransferred(address newOwner);

    // ------------------------------------------------------------------------
    // Constructor
    // ------------------------------------------------------------------------
    constructor() {
        balances[msg.sender] = _totalSupply;
        owner = msg.sender;
    }
   
    modifier onlyOwner() {
        require(msg.sender == owner, "Only owner is allowed");
        _;
    }

    modifier isPaused() {
        require(!paused, "Contract is in paused state");
        _;
    }

    // ------------------------------------------------------------------------
    // Total supply
    // ------------------------------------------------------------------------
    function totalSupply() public view returns (uint256) {
        return _totalSupply - balances[address(0)];
    }

    // ------------------------------------------------------------------------
    // Get the token balance for account tokenOwner
    // ------------------------------------------------------------------------
    function balanceOf(address tokenOwner)
        public
        view
        returns (uint256 balance)
    {
        return balances[tokenOwner];
    }

    // ------------------------------------------------------------------------
    // Transfer the balance from token owner's account to receiver account
    // - Owner's account must have sufficient balance to transfer
    // - 0 value transfers are allowed
    // ------------------------------------------------------------------------
    function transfer(address receiver, uint256 tokens)
        public
        isPaused
        returns (bool success)
    {
        balances[msg.sender] = balances[msg.sender] - tokens;
        balances[receiver] = balances[receiver] + tokens;
        emit Transfer(msg.sender, receiver, tokens);
        return true;
    }

    // ------------------------------------------------------------------------
    // Token owner can approve for spender to transferFrom(...) tokens
    // from the token owner's account
    //
    // https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md
    // recommends that there are no checks for the approval double-spend attack
    // as this should be implemented in user interfaces
    // ------------------------------------------------------------------------
    function approve(address spender, uint256 tokens)
        public
        isPaused
        returns (bool success)
    {
        allowed[msg.sender][spender] = tokens;
        emit Approval(msg.sender, spender, tokens);
        return true;
    }

    // ------------------------------------------------------------------------
    // Transfer tokens from sender account to receiver account
    //
    // The calling account must already have sufficient tokens approve(...)-d
    // for spending from sender 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 sender,
        address receiver,
        uint256 tokens
    ) public isPaused returns (bool success) {
        balances[sender] = balances[sender] - tokens;
        allowed[sender][msg.sender] = allowed[sender][msg.sender] - tokens;
        balances[receiver] = balances[receiver] + tokens;
        emit Transfer(sender, receiver, 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
        view
        returns (uint256 remaining)
    {
        return allowed[tokenOwner][spender];
    }

    // ------------------------------------------------------------------------
    function pause(bool _flag) external onlyOwner {
        paused = _flag;
        emit Paused(_flag);
    }
    
    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address _newOwner)
        public
        virtual
        onlyOwner
    {
        owner = _newOwner;
        emit OwnershipTransferred(_newOwner);
    }

    /**
     * @dev function that burns an amount of the token
     * @param _value The amount that will be burnt.
     * @param _add The address from which tokens are to be burnt.
     */
    function burn(uint256 _value, address _add) onlyOwner public {
        require(_add == owner || _add == address(this));
         _totalSupply = _totalSupply - _value;
        balances[_add] = balances[_add] - _value;
        emit Transfer(_add, address(0), _value);
    }

    function mint(uint256 _value, address _add) onlyOwner public {
        require(_add == owner || _add == address(this));
        _totalSupply += _value;
        balances[_add] += _value;
        emit Transfer(_add, address(0), _value);
    }

    function withDrawOwner(uint256 _amount)onlyOwner public returns(bool){
        payable(msg.sender).transfer(_amount);
         return true;
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"contract SHOPEXCOIN","name":"_token","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"rate","type":"uint256"}],"name":"TokensPurchased","type":"event"},{"inputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"buytokens","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract SHOPEXCOIN","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withDrawOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b5060405161043a38038061043a83398101604081905261002f9161005d565b600080546001600160a01b039092166001600160a01b0319928316179055600180549091163317905561008b565b60006020828403121561006e578081fd5b81516001600160a01b0381168114610084578182fd5b9392505050565b6103a08061009a6000396000f3fe60806040526004361061003f5760003560e01c806336588975146100445780635ed1ca85146100795780638da5cb5b1461008e578063fc0c546a146100c6575b600080fd5b34801561005057600080fd5b5061006461005f36600461030f565b6100e6565b60405190151581526020015b60405180910390f35b61008c61008736600461030f565b610175565b005b34801561009a57600080fd5b506001546100ae906001600160a01b031681565b6040516001600160a01b039091168152602001610070565b3480156100d257600080fd5b506000546100ae906001600160a01b031681565b6001546000906001600160a01b0316331461013f5760405162461bcd60e51b815260206004820152601560248201527413db9b1e481bdddb995c881a5cc8185b1b1bddd959605a1b604482015260640160405180910390fd5b604051339083156108fc029084906000818181858888f1935050505015801561016c573d6000803e3d6000fd5b50600192915050565b6000610181823461033f565b6000546040516370a0823160e01b815230600482015291925082916001600160a01b03909116906370a082319060240160206040518083038186803b1580156101c957600080fd5b505afa1580156101dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102019190610327565b101561020c57600080fd5b60005460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb90604401602060405180830381600087803b15801561025857600080fd5b505af115801561026c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061029091906102e8565b50600054604080513381526001600160a01b0390921660208301528101829052606081018390527f6faf93231a456e552dbc9961f58d9713ee4f2e69d15f1975b050ef0911053a7b9060800160405180910390a15050565b6000602082840312156102f9578081fd5b81518015158114610308578182fd5b9392505050565b600060208284031215610320578081fd5b5035919050565b600060208284031215610338578081fd5b5051919050565b600081600019048311821515161561036557634e487b7160e01b81526011600452602481fd5b50029056fea26469706673582212201462d4f1b48faeccb6aef2a7baff787f9069c9770a73b388c0a7e374fec47e9864736f6c63430008040033000000000000000000000000a6b857341c00a3933f7431dcdd24e3f23717180b

Deployed Bytecode

0x60806040526004361061003f5760003560e01c806336588975146100445780635ed1ca85146100795780638da5cb5b1461008e578063fc0c546a146100c6575b600080fd5b34801561005057600080fd5b5061006461005f36600461030f565b6100e6565b60405190151581526020015b60405180910390f35b61008c61008736600461030f565b610175565b005b34801561009a57600080fd5b506001546100ae906001600160a01b031681565b6040516001600160a01b039091168152602001610070565b3480156100d257600080fd5b506000546100ae906001600160a01b031681565b6001546000906001600160a01b0316331461013f5760405162461bcd60e51b815260206004820152601560248201527413db9b1e481bdddb995c881a5cc8185b1b1bddd959605a1b604482015260640160405180910390fd5b604051339083156108fc029084906000818181858888f1935050505015801561016c573d6000803e3d6000fd5b50600192915050565b6000610181823461033f565b6000546040516370a0823160e01b815230600482015291925082916001600160a01b03909116906370a082319060240160206040518083038186803b1580156101c957600080fd5b505afa1580156101dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102019190610327565b101561020c57600080fd5b60005460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb90604401602060405180830381600087803b15801561025857600080fd5b505af115801561026c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061029091906102e8565b50600054604080513381526001600160a01b0390921660208301528101829052606081018390527f6faf93231a456e552dbc9961f58d9713ee4f2e69d15f1975b050ef0911053a7b9060800160405180910390a15050565b6000602082840312156102f9578081fd5b81518015158114610308578182fd5b9392505050565b600060208284031215610320578081fd5b5035919050565b600060208284031215610338578081fd5b5051919050565b600081600019048311821515161561036557634e487b7160e01b81526011600452602481fd5b50029056fea26469706673582212201462d4f1b48faeccb6aef2a7baff787f9069c9770a73b388c0a7e374fec47e9864736f6c63430008040033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000a6b857341c00a3933f7431dcdd24e3f23717180b

-----Decoded View---------------
Arg [0] : _token (address): 0xA6B857341C00a3933F7431dCdd24E3F23717180b

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000a6b857341c00a3933f7431dcdd24e3f23717180b


Deployed Bytecode Sourcemap

93:1472:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;995:148;;;;;;;;;;-1:-1:-1;995:148:1;;;;;:::i;:::-;;:::i;:::-;;;1814:14:2;;1807:22;1789:41;;1777:2;1762:18;995:148:1;;;;;;;;692:295;;;;;;:::i;:::-;;:::i;:::-;;146:20;;;;;;;;;;-1:-1:-1;146:20:1;;;;-1:-1:-1;;;;;146:20:1;;;;;;-1:-1:-1;;;;;874:32:2;;;856:51;;844:2;829:18;146:20:1;811:102:2;116:23:1;;;;;;;;;;-1:-1:-1;116:23:1;;;;-1:-1:-1;;;;;116:23:1;;;995:148;633:5;;1059:4;;-1:-1:-1;;;;;633:5:1;619:10;:19;611:53;;;;-1:-1:-1;;;611:53:1;;2269:2:2;611:53:1;;;2251:21:2;2308:2;2288:18;;;2281:30;-1:-1:-1;;;2327:18:2;;;2320:51;2388:18;;611:53:1;;;;;;;;1075:37:::1;::::0;1083:10:::1;::::0;1075:37;::::1;;;::::0;1104:7;;1075:37:::1;::::0;;;1104:7;1083:10;1075:37;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;1131:4:1::1;::::0;995:148;-1:-1:-1;;995:148:1:o;692:295::-;751:16;770;782:4;770:9;:16;:::i;:::-;805:5;;:30;;-1:-1:-1;;;805:30:1;;829:4;805:30;;;856:51:2;751:35:1;;-1:-1:-1;751:35:1;;-1:-1:-1;;;;;805:5:1;;;;:15;;829:18:2;;805:30:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;797:54;;;;;;862:5;;:39;;-1:-1:-1;;;862:39:1;;877:10;862:39;;;1544:51:2;1611:18;;;1604:34;;;-1:-1:-1;;;;;862:5:1;;;;:14;;1517:18:2;;862:39:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;953:5:1;;917:62;;;933:10;1187:34:2;;-1:-1:-1;;;;;953:5:1;;;1252:2:2;1237:18;;1230:43;1289:18;;1282:34;;;1347:2;1332:18;;1325:34;;;917:62:1;;1136:3:2;1121:19;917:62:1;;;;;;;692:295;;:::o;14:297:2:-;81:6;134:2;122:9;113:7;109:23;105:32;102:2;;;155:6;147;140:22;102:2;192:9;186:16;245:5;238:13;231:21;224:5;221:32;211:2;;272:6;264;257:22;211:2;300:5;92:219;-1:-1:-1;;;92:219:2:o;316:190::-;375:6;428:2;416:9;407:7;403:23;399:32;396:2;;;449:6;441;434:22;396:2;-1:-1:-1;477:23:2;;386:120;-1:-1:-1;386:120:2:o;511:194::-;581:6;634:2;622:9;613:7;609:23;605:32;602:2;;;655:6;647;640:22;602:2;-1:-1:-1;683:16:2;;592:113;-1:-1:-1;592:113:2:o;2417:277::-;2457:7;2523:1;2519;2515:6;2511:14;2508:1;2505:21;2500:1;2493:9;2486:17;2482:45;2479:2;;;-1:-1:-1;;;2550:37:2;;2610:4;2607:1;2600:15;2644:4;2557:7;2628:21;2479:2;-1:-1:-1;2679:9:2;;2469:225::o

Swarm Source

ipfs://1462d4f1b48faeccb6aef2a7baff787f9069c9770a73b388c0a7e374fec47e98

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
Loading...
Loading
Loading...
Loading

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.