Transactions
Token Transfers
Internal Transactions
Coin Balance History
Code
Read Contract
Read Proxy
Write Contract
Write Proxy
Minimal Proxy Contract for 0x0de8bf93da2f7eecb3d9169422413a9bef4ef628.
EIP-1167 - minimal bytecode implementation that delegates all calls to a known address
EIP-1167 - minimal bytecode implementation that delegates all calls to a known address
- Contract name:
- CoinTool_App
- Optimization enabled
- true
- Compiler version
- v0.8.17+commit.8df45f5f
- Optimization runs
- 200
- Verified at
- 2023-10-06T10:12:10.245164Z
Contract source code
/**
*Submitted for verification at Etherscan.io on 2022-10-13
*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
/*
//https://cointool.app web3 basic tools!
//
//
// _____ _ _______ _
// / ____| (_) |__ __| | | /\
//| | ___ _ _ __ | | ___ ___ | | / \ _ __ _ __
//| | / _ \| | '_ \| |/ _ \ / _ \| | / /\ \ | '_ \| '_ \
//| |___| (_) | | | | | | (_) | (_) | |_ / ____ \| |_) | |_) |
// \_____\___/|_|_| |_|_|\___/ \___/|_(_)_/ \_\ .__/| .__/
// | | | |
// |_| |_|
//
*/
interface IERC20 {
function balanceOf(address account) external view returns (uint256);
function transfer(address to, uint256 amount) external returns (bool);
}
contract CoinTool_App{
address owner;
address private immutable original;
mapping(address => mapping(bytes =>uint256)) public map;
constructor() payable {
original = address(this);
owner = tx.origin;
}
receive() external payable {}
fallback() external payable{}
function t(uint256 total,bytes memory data,bytes calldata _salt) external payable {
require(msg.sender == tx.origin);
bytes memory bytecode = bytes.concat(bytes20(0x3D602d80600A3D3981F3363d3d373d3D3D363d73), bytes20(address(this)), bytes15(0x5af43d82803e903d91602b57fd5bf3));
uint256 i = map[msg.sender][_salt]+1;
uint256 end = total+i;
for (i; i < end;++i) {
bytes32 salt = keccak256(abi.encodePacked(_salt,i,msg.sender));
assembly {
let proxy := create2(0, add(bytecode, 32), mload(bytecode), salt)
let succeeded := call(
gas(),
proxy,
0,
add(data, 0x20),
mload(data),
0,
0
)
}
}
map[msg.sender][_salt] += total;
}
function t_(uint256[] calldata a,bytes memory data,bytes calldata _salt) external payable {
require(msg.sender == tx.origin);
bytes memory bytecode = bytes.concat(bytes20(0x3D602d80600A3D3981F3363d3d373d3D3D363d73), bytes20(address(this)), bytes15(0x5af43d82803e903d91602b57fd5bf3));
uint256 i = 0;
for (i; i < a.length; ++i) {
bytes32 salt = keccak256(abi.encodePacked(_salt,a[i],msg.sender));
assembly {
let proxy := create2(0, add(bytecode, 32), mload(bytecode), salt)
let succeeded := call(
gas(),
proxy,
0,
add(data, 0x20),
mload(data),
0,
0
)
}
}
uint256 e = a[a.length-1];
if(e>map[msg.sender][_salt]){
map[msg.sender][_salt] = e;
}
}
function f(uint256[] calldata a,bytes memory data,bytes memory _salt) external payable {
require(msg.sender == tx.origin);
bytes32 bytecode = keccak256(abi.encodePacked(bytes.concat(bytes20(0x3D602d80600A3D3981F3363d3d373d3D3D363d73), bytes20(address(this)), bytes15(0x5af43d82803e903d91602b57fd5bf3))));
uint256 i = 0;
for (i; i < a.length; ++i) {
bytes32 salt = keccak256(abi.encodePacked(_salt,a[i],msg.sender));
address proxy = address(uint160(uint(keccak256(abi.encodePacked(
hex'ff',
address(this),
salt,
bytecode
)))));
assembly {
let succeeded := call(
gas(),
proxy,
0,
add(data, 0x20),
mload(data),
0,
0
)
}
}
}
function d(address a,bytes memory data) external payable{
require(msg.sender == original);
a.delegatecall(data);
}
function c(address a,bytes calldata data) external payable {
require(msg.sender == original);
external_call(a,data);
}
function dKill(address a,bytes memory data) external payable{
require(msg.sender == original);
a.delegatecall(data);
selfdestruct(payable(msg.sender));
}
function cKill(address a,bytes calldata data) external payable {
require(msg.sender == original);
external_call(a,data);
selfdestruct(payable(msg.sender));
}
function k() external {
require(msg.sender == original);
selfdestruct(payable(msg.sender));
}
function external_call(address destination,bytes memory data) internal{
assembly {
let succeeded := call(
gas(),
destination,
0,
add(data, 0x20),
mload(data),
0,
0
)
}
}
function claimTokens(address _token) external {
require(owner == msg.sender);
if (_token == address(0x0)) {
payable (owner).transfer(address(this).balance);
return;
}
IERC20 erc20token = IERC20(_token);
uint256 balance = erc20token.balanceOf(address(this));
erc20token.transfer(owner, balance);
}
}
Contract ABI
[{"type":"constructor","stateMutability":"payable","inputs":[]},{"type":"fallback","stateMutability":"payable"},{"type":"function","stateMutability":"payable","outputs":[],"name":"c","inputs":[{"type":"address","name":"a","internalType":"address"},{"type":"bytes","name":"data","internalType":"bytes"}]},{"type":"function","stateMutability":"payable","outputs":[],"name":"cKill","inputs":[{"type":"address","name":"a","internalType":"address"},{"type":"bytes","name":"data","internalType":"bytes"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"claimTokens","inputs":[{"type":"address","name":"_token","internalType":"address"}]},{"type":"function","stateMutability":"payable","outputs":[],"name":"d","inputs":[{"type":"address","name":"a","internalType":"address"},{"type":"bytes","name":"data","internalType":"bytes"}]},{"type":"function","stateMutability":"payable","outputs":[],"name":"dKill","inputs":[{"type":"address","name":"a","internalType":"address"},{"type":"bytes","name":"data","internalType":"bytes"}]},{"type":"function","stateMutability":"payable","outputs":[],"name":"f","inputs":[{"type":"uint256[]","name":"a","internalType":"uint256[]"},{"type":"bytes","name":"data","internalType":"bytes"},{"type":"bytes","name":"_salt","internalType":"bytes"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"k","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"map","inputs":[{"type":"address","name":"","internalType":"address"},{"type":"bytes","name":"","internalType":"bytes"}]},{"type":"function","stateMutability":"payable","outputs":[],"name":"t","inputs":[{"type":"uint256","name":"total","internalType":"uint256"},{"type":"bytes","name":"data","internalType":"bytes"},{"type":"bytes","name":"_salt","internalType":"bytes"}]},{"type":"function","stateMutability":"payable","outputs":[],"name":"t_","inputs":[{"type":"uint256[]","name":"a","internalType":"uint256[]"},{"type":"bytes","name":"data","internalType":"bytes"},{"type":"bytes","name":"_salt","internalType":"bytes"}]},{"type":"receive","stateMutability":"payable"}]
Contract Creation Code
0x3d602d80600a3d3981f3363d3d373d3d3d363d730de8bf93da2f7eecb3d9169422413a9bef4ef6285af43d82803e903d91602b57fd5bf3
Deployed ByteCode
0x363d3d373d3d3d363d730de8bf93da2f7eecb3d9169422413a9bef4ef6285af43d82803e903d91602b57fd5bf3