More Info
Private Name Tags
ContractCreator
Multichain Info
No addresses found
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Loading...
Loading
Contract Name:
ETHSwap
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity Multiple files format)
// 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); // } }
// 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
- No Contract Security Audit Submitted- Submit Audit Here
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"}]
Contract Creation Code
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
Loading...
Loading
Loading...
Loading
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.