Address Contract Partially Verified
Address
0x004342B24Feb3f6eeC1C15f39a5C21f0FC2b589A
Balance
0 ETH
Nonce
1
Code Size
5940 bytes
Creator
0xcE608411...52D8 at tx 0xdb9f0e57...99971b
Indexed Transactions
0
Contract Bytecode
5940 bytes
0x608060405234801561000f575f80fd5b50600436106100e8575f3560e01c8063c6d51dc71161008a578063e086e5ec11610064578063e086e5ec146101ea578063e19a7bc8146101f4578063f2bcd022146101fe578063f2fde38b1461021c576100e8565b8063c6d51dc714610194578063cbc7854e146101b2578063d0456b4e146101ce576100e8565b80637c6e94e3116100c65780637c6e94e31461011e5780638da5cb5b1461013c578063a1db97821461015a578063baee55ca14610176576100e8565b806303fd2a45146100ec57806318264f331461010a578063715018a614610114575b5f80fd5b6100f4610238565b604051610101919061100f565b60405180910390f35b61011261025c565b005b61011c610390565b005b6101266104e3565b6040516101339190611042565b60405180910390f35b6101446104f6565b604051610151919061100f565b60405180910390f35b610174600480360381019061016f91906110bc565b61051e565b005b61017e610654565b60405161018b9190611155565b60405180910390f35b61019c610679565b6040516101a99190611155565b60405180910390f35b6101cc60048036038101906101c791906111a9565b61069e565b005b6101e860048036038101906101e391906111e7565b6107b8565b005b6101f2610bb3565b005b6101fc610caf565b005b610206610de3565b604051610213919061100f565b60405180910390f35b61023660048036038101906102319190611212565b610e07565b005b7f000000000000000000000000000000000000000000000000000000000000dead81565b610264610fc9565b73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146102f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102e990611297565b60405180910390fd5b5f1515600460149054906101000a900460ff16151514610347576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033e906112ff565b60405180910390fd5b6001600460146101000a81548160ff0219169083151502179055507f882ea0955bd5561a49a52ef27eb0a7b8263561bd890de2ccfbc107df7724f18860405160405180910390a1565b610398610fc9565b73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610426576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041d90611297565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600460149054906101000a900460ff1681565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610526610fc9565b73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ab90611297565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb7f000000000000000000000000ce6084118756da652f793fd52b45d6fcd48b52d8836040518363ffffffff1660e01b815260040161060f92919061132c565b6020604051808303815f875af115801561062b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061064f919061137d565b505050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6106a6610fc9565b73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072b90611297565b60405180910390fd5b8160035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60025f54036107fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f3906113f2565b60405180910390fd5b60025f8190555060011515600460149054906101000a900460ff16151514610859576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108509061145a565b60405180910390fd5b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016108b4919061100f565b602060405180830381865afa1580156108cf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108f3919061148c565b905081811015610938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092f90611527565b60405180910390fd5b8160045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610993919061100f565b602060405180830381865afa1580156109ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109d2919061148c565b1015610a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0a906115b5565b60405180910390fd5b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd337f000000000000000000000000000000000000000000000000000000000000dead856040518463ffffffff1660e01b8152600401610a91939291906115d3565b6020604051808303815f875af1158015610aad573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ad1919061137d565b5060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401610b2e92919061132c565b6020604051808303815f875af1158015610b4a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6e919061137d565b507f8b80bd19aea7b735bc6d75db8d6adbe18b28c30d62b3555245eb67b2340caedc3383604051610ba092919061132c565b60405180910390a15060015f8190555050565b610bbb610fc9565b73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4090611297565b60405180910390fd5b7f000000000000000000000000ce6084118756da652f793fd52b45d6fcd48b52d873ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610cac573d5f803e3d5ffd5b50565b610cb7610fc9565b73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3c90611297565b60405180910390fd5b60011515600460149054906101000a900460ff16151514610d9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9290611652565b60405180910390fd5b5f600460146101000a81548160ff0219169083151502179055507f9bfcea2c03973b3a86fa004ee283c194c59d95caf3065736616f1e3a88c33e7160405160405180910390a1565b7f000000000000000000000000ce6084118756da652f793fd52b45d6fcd48b52d881565b610e0f610fc9565b73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9490611297565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f02906116e0565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610ff982610fd0565b9050919050565b61100981610fef565b82525050565b5f6020820190506110225f830184611000565b92915050565b5f8115159050919050565b61103c81611028565b82525050565b5f6020820190506110555f830184611033565b92915050565b5f80fd5b61106881610fef565b8114611072575f80fd5b50565b5f813590506110838161105f565b92915050565b5f819050919050565b61109b81611089565b81146110a5575f80fd5b50565b5f813590506110b681611092565b92915050565b5f80604083850312156110d2576110d161105b565b5b5f6110df85828601611075565b92505060206110f0858286016110a8565b9150509250929050565b5f819050919050565b5f61111d61111861111384610fd0565b6110fa565b610fd0565b9050919050565b5f61112e82611103565b9050919050565b5f61113f82611124565b9050919050565b61114f81611135565b82525050565b5f6020820190506111685f830184611146565b92915050565b5f61117882610fef565b9050919050565b6111888161116e565b8114611192575f80fd5b50565b5f813590506111a38161117f565b92915050565b5f80604083850312156111bf576111be61105b565b5b5f6111cc85828601611195565b92505060206111dd85828601611195565b9150509250929050565b5f602082840312156111fc576111fb61105b565b5b5f611209848285016110a8565b91505092915050565b5f602082840312156112275761122661105b565b5b5f61123484828501611075565b91505092915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61128160208361123d565b915061128c8261124d565b602082019050919050565b5f6020820190508181035f8301526112ae81611275565b9050919050565b7f4d6967726174696f6e20697320616c726561647920656e61626c6564000000005f82015250565b5f6112e9601c8361123d565b91506112f4826112b5565b602082019050919050565b5f6020820190508181035f830152611316816112dd565b9050919050565b61132681611089565b82525050565b5f60408201905061133f5f830185611000565b61134c602083018461131d565b9392505050565b61135c81611028565b8114611366575f80fd5b50565b5f8151905061137781611353565b92915050565b5f602082840312156113925761139161105b565b5b5f61139f84828501611369565b91505092915050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f6113dc601f8361123d565b91506113e7826113a8565b602082019050919050565b5f6020820190508181035f830152611409816113d0565b9050919050565b7f4d6967726174696f6e206e6f74207374617274656420796574000000000000005f82015250565b5f61144460198361123d565b915061144f82611410565b602082019050919050565b5f6020820190508181035f83015261147181611438565b9050919050565b5f8151905061148681611092565b92915050565b5f602082840312156114a1576114a061105b565b5b5f6114ae84828501611478565b91505092915050565b7f596f75206d75737420686f6c6420563120746f6b656e7320746f206d696772615f8201527f7465000000000000000000000000000000000000000000000000000000000000602082015250565b5f61151160228361123d565b915061151c826114b7565b604082019050919050565b5f6020820190508181035f83015261153e81611505565b9050919050565b7f4e6f7420656e6f75676820746f6b656e7320696e2074686520636f6e747261635f8201527f742c20636f6e7461637420746865207465616d00000000000000000000000000602082015250565b5f61159f60338361123d565b91506115aa82611545565b604082019050919050565b5f6020820190508181035f8301526115cc81611593565b9050919050565b5f6060820190506115e65f830186611000565b6115f36020830185611000565b611600604083018461131d565b949350505050565b7f4d6967726174696f6e20697320616c72656164792064697361626c65640000005f82015250565b5f61163c601d8361123d565b915061164782611608565b602082019050919050565b5f6020820190508181035f83015261166981611630565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6116ca60268361123d565b91506116d582611670565b604082019050919050565b5f6020820190508181035f8301526116f7816116be565b905091905056fea264697066735822122048abb72ac398059d26bfd43c1012f6c70b33e3a212d1ea567bac575c8b1b599064736f6c634300081a0033
Verified Source Code Partial Match
Compiler: v0.8.26+commit.8a97fa7a
EVM: cancun
Optimization: No
Migration.sol 141 lines
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.6;
abstract contract Context {
function _msgSender() internal view virtual returns (address payable) {
return payable(msg.sender);
}
function _msgData() internal view virtual returns (bytes memory) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
interface IERC20 {
function decimals() external view returns (uint256);
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
/// https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/security/ReentrancyGuard.sol
abstract contract ReentrancyGuard {
uint256 private constant _NOT_ENTERED = 1;
uint256 private constant _ENTERED = 2;
uint256 private _status;
constructor() {
_status = _NOT_ENTERED;
}
modifier nonReentrant() {
require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
_status = _ENTERED;
_;
_status = _NOT_ENTERED;
}
}
contract Ownable is Context {
address private _owner;
address private _previousOwner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor () {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
function owner() public view returns (address) {
return _owner;
}
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
contract Migration is ReentrancyGuard, Ownable{
address public immutable DEAD = 0x000000000000000000000000000000000000dEaD;
address public immutable withdrawalAddress = 0xcE6084118756Da652F793fd52b45D6FCd48b52D8;
IERC20 public Catboy; //address of the old version
IERC20 public CatboyNew; //address of the new version
bool public migrationStarted = false;
event Migrated(address walletAddress, uint256 amount);
event MigrationStarted();
event MigrationStopped();
event TokensUpdated(address oldAddress, address newAddress);
constructor(IERC20 tokenAddressV1, IERC20 tokenAddressV2) {
CatboyNew = tokenAddressV2;
Catboy = tokenAddressV1;
}
/// @notice Enables the migration
function startMigration() external onlyOwner{
require(migrationStarted == false, "Migration is already enabled");
migrationStarted = true;
emit MigrationStarted();
}
/// @notice Disable the migration
function stopMigration() external onlyOwner{
require(migrationStarted == true, "Migration is already disabled");
migrationStarted = false;
emit MigrationStopped();
}
function setTokens(IERC20 Catboyaddr, IERC20 CatboyNewaddr) external onlyOwner{
Catboy = Catboyaddr;
CatboyNew = CatboyNewaddr;
}
function withdrawETH() public onlyOwner {
payable(withdrawalAddress).transfer(address(this).balance);
}
function withdrawERC20(address _tokenCA, uint256 _amount) public onlyOwner {
IERC20(_tokenCA).transfer(withdrawalAddress, _amount);
}
function migrateTokens(uint256 amount) public nonReentrant(){
require(migrationStarted == true, 'Migration not started yet');
uint256 userV1Balance = Catboy.balanceOf(msg.sender);
require(userV1Balance >= amount, 'You must hold V1 tokens to migrate');
require(CatboyNew.balanceOf(address(this)) >= amount, 'Not enough tokens in the contract, contact the team');
Catboy.transferFrom(msg.sender, DEAD, amount);
CatboyNew.transfer(msg.sender, amount);
emit Migrated(msg.sender, amount);
}
}
Read Contract
Catboy 0xc6d51dc7 → address
CatboyNew 0xbaee55ca → address
DEAD 0x03fd2a45 → address
migrationStarted 0x7c6e94e3 → bool
owner 0x8da5cb5b → address
withdrawalAddress 0xf2bcd022 → address
Write Contract 8 functions
These functions modify contract state and require a wallet transaction to execute.
migrateTokens 0xd0456b4e
uint256 amount
renounceOwnership 0x715018a6
No parameters
setTokens 0xcbc7854e
address Catboyaddr
address CatboyNewaddr
startMigration 0x18264f33
No parameters
stopMigration 0xe19a7bc8
No parameters
transferOwnership 0xf2fde38b
address newOwner
withdrawERC20 0xa1db9782
address _tokenCA
uint256 _amount
withdrawETH 0xe086e5ec
No parameters
Recent Transactions
No transactions found for this address