More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 1,412 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Migrate User Inf... | 15199017 | 721 days ago | IN | 0 ETH | 0.00009081 | ||||
Migrate User Inf... | 14370564 | 854 days ago | IN | 0 ETH | 0.00109925 | ||||
Migrate User Inf... | 12875932 | 1087 days ago | IN | 0 ETH | 0.00152695 | ||||
Migrate User Inf... | 12875932 | 1087 days ago | IN | 0 ETH | 0.00152695 | ||||
Migrate User Inf... | 12852694 | 1090 days ago | IN | 0 ETH | 0.00907711 | ||||
Migrate User Inf... | 12852157 | 1091 days ago | IN | 0 ETH | 0.00771554 | ||||
Migrate User Inf... | 12851961 | 1091 days ago | IN | 0 ETH | 0.00825192 | ||||
Migrate User Inf... | 12851804 | 1091 days ago | IN | 0 ETH | 0.01408841 | ||||
Migrate User Inf... | 12851589 | 1091 days ago | IN | 0 ETH | 0.01669235 | ||||
Swap | 12851283 | 1091 days ago | IN | 0 ETH | 0.00147417 | ||||
Migrate User Inf... | 12850953 | 1091 days ago | IN | 0 ETH | 0.00939227 | ||||
Migrate User Inf... | 12850741 | 1091 days ago | IN | 0 ETH | 0.00783932 | ||||
Migrate User Inf... | 12850675 | 1091 days ago | IN | 0 ETH | 0.00783932 | ||||
Migrate User Inf... | 12850623 | 1091 days ago | IN | 0 ETH | 0.00660153 | ||||
Migrate User Inf... | 12849707 | 1091 days ago | IN | 0 ETH | 0.00938379 | ||||
Migrate User Inf... | 12848824 | 1091 days ago | IN | 0 ETH | 0.01253471 | ||||
Swap | 12847693 | 1091 days ago | IN | 0 ETH | 0.00137211 | ||||
Migrate User Inf... | 12847300 | 1091 days ago | IN | 0 ETH | 0.0004004 | ||||
Migrate User Inf... | 12847300 | 1091 days ago | IN | 0 ETH | 0.00852742 | ||||
Migrate User Inf... | 12846697 | 1091 days ago | IN | 0 ETH | 0.00860181 | ||||
Migrate User Inf... | 12846509 | 1091 days ago | IN | 0 ETH | 0.00886247 | ||||
Migrate User Inf... | 12846454 | 1091 days ago | IN | 0 ETH | 0.01146908 | ||||
Migrate User Inf... | 12845478 | 1092 days ago | IN | 0 ETH | 0.02241684 | ||||
Migrate User Inf... | 12845334 | 1092 days ago | IN | 0 ETH | 0.01444086 | ||||
Migrate User Inf... | 12844909 | 1092 days ago | IN | 0 ETH | 0.01313133 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
MigratorFull
Compiler Version
v0.8.0+commit.c7dfd78e
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
pragma solidity 0.8.0; // SPDX-License-Identifier: MIT import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "./tacoswapv2/interfaces/ITacoswapV2Pair.sol"; import "./tacoswapv2/interfaces/ITacoswapV2Factory.sol"; import "./interfaces/IMasterChef.sol"; import "./interfaces/IETacoChef.sol"; import "./MigratorDummy.sol"; /** *@title MigratorFull contract * - Users can: * #Migrate` migrates LP tokens from TacoChef to eTacoChef * #migrateUserInfo * - only owner can * #MigratePools **/ contract MigratorFull { IMasterChef public oldChef; IETacoChef public newChef; MigratorDummy public dummyMigrator; address public uniFactory; address public sushiFactory; ITacoswapV2Factory public factory; uint256 public desiredLiquidity = type(uint256).max; IERC20 private _taco; IERC20 private _etaco; mapping(address => bool) public isMigrated; /** * @param _oldChef The address of TacoChef contract. * @param _newChef The address of eTacoChef. * @param _dummyMigrator The address of MigratorDummy. * @param _uniFactory The address of UniSwapV2Factory. * @param _sushiFactory The address of SushiSwapFactory. * @param _factory The address of TacoSwapFactory. * @param tacoToken_ The address of TacoToken * @param etaco_ The address of eTacoToken **/ constructor( address _oldChef, address _newChef, address _dummyMigrator, address _uniFactory, address _sushiFactory, address _factory, address tacoToken_, address etaco_ ) { require(_oldChef != address(0x0), "Migrator::set zero address"); require(_dummyMigrator != address(0x0), "Migrator::set zero address"); require(_newChef != address(0x0), "Migrator::set zero address"); require(_uniFactory != address(0x0), "Migrator::set zero address"); require(_sushiFactory != address(0x0), "Migrator::set zero address"); require(tacoToken_ != address(0x0), "TacoToETaco::set zero address"); require(etaco_ != address(0x0), "TacoToETaco::set zero address"); _taco = IERC20(tacoToken_); _etaco = IERC20(etaco_); uniFactory = _uniFactory; sushiFactory = _sushiFactory; oldChef = IMasterChef(_oldChef); newChef = IETacoChef(_newChef); dummyMigrator = MigratorDummy(_dummyMigrator); factory = ITacoswapV2Factory(_factory); } /** * @dev Migrates LP tokens from TacoChef to eTacoChef. * DummyToken is neaded to pass require in TacoChef contracts migrate function. **/ function migrate(ITacoswapV2Pair orig) public returns (IERC20) { require( msg.sender == address(oldChef), "Migrator: not from old master chef" ); uint256 lp = orig.balanceOf(msg.sender); IERC20 dummyToken = IERC20(dummyMigrator.lpTokenToDummyToken(address(orig))); newChef.approveDummies(address(dummyToken)); orig.transferFrom(msg.sender, address(newChef), lp); dummyToken.transferFrom(address(newChef), address(oldChef), lp); return dummyToken; } function migrateLP(ITacoswapV2Pair orig) public returns (ITacoswapV2Pair) { require(msg.sender == address(newChef), "not from master chef"); require( orig.factory() == uniFactory || orig.factory() == sushiFactory, "Migrator: not from old factory" ); address token0 = orig.token0(); address token1 = orig.token1(); ITacoswapV2Pair pair = ITacoswapV2Pair(factory.getPair(token0, token1)); if (pair == ITacoswapV2Pair(address(0))) { pair = ITacoswapV2Pair(factory.createPair(token0, token1)); } uint256 lp = orig.balanceOf(msg.sender); if (lp == 0) return pair; desiredLiquidity = lp; orig.transferFrom(msg.sender, address(orig), lp); orig.burn(address(pair)); pair.mint(msg.sender); desiredLiquidity = type(uint256).max; return pair; } /** * @dev Migrates UserInfo from TacoChef to eTacoChef. * Can be called by user one time only. **/ function migrateUserInfo() external { require(!isMigrated[msg.sender], "Migrator: Already migrated"); uint256 oldPoolLength = oldChef.poolLength(); for (uint256 i = 0; i < oldPoolLength; i++) { (, , , uint256 accTacoPerShare) = oldChef.poolInfo(i); (uint256 amount, ) = oldChef.userInfo(i, msg.sender); if (amount == 0) continue; newChef.setUser(i, msg.sender, amount, amount * accTacoPerShare / 1e12); } swap(); isMigrated[msg.sender] = true; } /** * @dev Migrates UserInfo from TacoChef to eTacoChef. * Can be called by user one time and required to call deposit function. **/ function swap() public { uint256 _amount = _taco.balanceOf(msg.sender); _taco.transferFrom(msg.sender, address(this), _amount); _etaco.transfer(msg.sender, _amount); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); }
pragma solidity >=0.5.0; // SPDX-License-Identifier: GPL-3.0 interface ITacoswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; }
pragma solidity >=0.5.0; // SPDX-License-Identifier: GPL-3.0 interface ITacoswapV2Factory { function feeTo() external view returns (address); function feeToSetter() external view returns (address); function migrator() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; function setMigrator(address) external; }
pragma solidity 0.8.0; // SPDX-License-Identifier: MIT interface IMasterChef { function deposit(uint256, uint256) external; function harvest(uint256) external; function poolLength() external returns (uint256); function userInfo(uint256, address) external returns(uint256, uint256); function totalAllocPoint() external view returns(uint256); function pendingTaco() external view returns(uint256); function poolInfo(uint256) external returns(address, uint256, uint256, uint256); function setMigrator(address) external; function migrate(uint256) external; function massUpdatePools() external; }
pragma solidity 0.8.0; // SPDX-License-Identifier: MIT interface IETacoChef { function poolLength() external view returns (uint256); function startBlock() external view returns (uint256); function approveDummies(address) external; function getrewardForBlock(uint256) external view returns (uint256); function getReward(uint256, uint256) external view returns (uint256); function poolInfo(uint256) external view returns ( address, uint256, uint256, uint256 ); function userInfo(uint256, uint256) external view returns (uint256, uint256); function pendingeTaco(uint256, address) external view returns (uint256); function speedStake( uint256, uint256, uint256, uint256, uint256, uint256 ) external payable returns (uint256); function totalAllocPoint() external view returns (uint256); function deposit(uint256, uint256) external; function setPool( uint256, address, uint256, uint256, uint256 ) external; function setUser( uint256, address, uint256, uint256 ) external; }
pragma solidity 0.8.0; // SPDX-License-Identifier: MIT import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; import "./tacoswapv2/interfaces/ITacoswapV2Pair.sol"; import "./interfaces/IMasterChef.sol"; import "./interfaces/IETacoChef.sol"; import "./DummyToken.sol"; /** *@title Migrator contract * - Users can: * #Migrate` migrates LP tokens from TacoChef to eTacoChef * #migrateUserInfo * - only owner can * #MigratePools **/ contract MigratorDummy is Ownable { IMasterChef public oldChef; IETacoChef public newChef; uint256 public desiredLiquidity = type(uint256).max; mapping(address => address) public lpTokenToDummyToken; mapping(address => bool) public isMigrated; /** * @param _oldChef The address of TacoChef contract. * @param _newChef The address of eTacoChef. **/ constructor( address _oldChef, address _newChef ) { require(_oldChef != address(0x0), "Migrator::set zero address"); require(_newChef != address(0x0), "Migrator::set zero address"); oldChef = IMasterChef(_oldChef); newChef = IETacoChef(_newChef); } /** * @dev Migrates pools which pids are given in array(pools). * Can be called one time, when eTacoChef poolInfo is empty. * @param oldPools Array which contains old master pids that must be migrated. * @param newPools Array which contains new master pids that must be migrated. **/ function migratePools(uint256[] memory oldPools, uint256[] memory newPools) external onlyOwner { uint256 poolsLength = oldPools.length; for (uint256 i = 0; i < poolsLength; i++) { (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accTacoPerShare) = oldChef.poolInfo(oldPools[i]); ITacoswapV2Pair lp = ITacoswapV2Pair(lpToken); DummyToken dummyToken = new DummyToken(); dummyToken.mint(address(newChef), lp.balanceOf(address(oldChef))); dummyToken.mint(msg.sender, 1e21); lpTokenToDummyToken[lpToken] = address(dummyToken); newChef.setPool( newPools[i], address(dummyToken), allocPoint, lastRewardBlock, accTacoPerShare ); } } /** * @dev Migrates UserInfo from TacoChef to eTacoChef * Can be called by user one time and required to call deposit function * with amount = 0, for all pools where the user have some amount before migration. **/ function migrateUserInfo() external onlyOwner { require(!isMigrated[msg.sender], "Migrator: Already migrated"); for (uint256 i = 0; i < 17; i++) { (uint256 amount, uint256 rewardDebt) = oldChef.userInfo(i, msg.sender); if (amount == 0) continue; newChef.setUser(i, msg.sender, amount, rewardDebt); } isMigrated[msg.sender] = true; } /** * @dev Migrates LP tokens from TacoChef to eTacoChef. * Deploy DummyToken. Mint DummyToken with the same amount of LP tokens. * DummyToken is neaded to pass require in TacoChef contracts migrate function. **/ function migrate(ITacoswapV2Pair orig) public onlyOwner returns (IERC20) { // Transfer all LP tokens from oldMaster to newMaster // Deploy dummy token // Mint same amount of dummy token for oldMaster require( msg.sender == address(oldChef), "Migrator: not from old master chef" ); DummyToken dummyToken = new DummyToken(); uint256 lp = orig.balanceOf(msg.sender); if (lp == 0) return dummyToken; desiredLiquidity = lp; orig.transferFrom(msg.sender, address(newChef), lp); dummyToken.mint(msg.sender, lp); desiredLiquidity = type(uint256).max; return dummyToken; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @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 { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } }
pragma solidity ^0.8.0; // SPDX-License-Identifier: MIT import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; /** *@title DummyToken contract * @dev It is deployed only when the Migrate function is called. * Owner of DummyToken contract is MIgrator contract. **/ contract DummyToken is ERC20("Dummy.Token", "DMT"), Ownable { /// @notice Creates `_amount` token to `_to`. Must only be called by the owner (MasterChef). function mint(address _to, uint256 _amount) public onlyOwner { _mint(_to, _amount); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./IERC20.sol"; import "./extensions/IERC20Metadata.sol"; import "../../utils/Context.sol"; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin guidelines: functions revert instead * of returning `false` on failure. This behavior is nonetheless conventional * and does not conflict with the expectations of ERC20 applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20, IERC20Metadata { mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The defaut value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor (string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); _approve(sender, _msgSender(), currentAllowance - amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); _approve(_msgSender(), spender, currentAllowance - subtractedValue); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer(address sender, address recipient, uint256 amount) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); _balances[sender] = senderBalance - amount; _balances[recipient] += amount; emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `to` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); _balances[account] = accountBalance - amount; _totalSupply -= amount; emit Transfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be to transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../IERC20.sol"; /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } }, "metadata": { "useLiteralContent": true }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_oldChef","type":"address"},{"internalType":"address","name":"_newChef","type":"address"},{"internalType":"address","name":"_dummyMigrator","type":"address"},{"internalType":"address","name":"_uniFactory","type":"address"},{"internalType":"address","name":"_sushiFactory","type":"address"},{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"tacoToken_","type":"address"},{"internalType":"address","name":"etaco_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"desiredLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dummyMigrator","outputs":[{"internalType":"contract MigratorDummy","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"contract ITacoswapV2Factory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMigrated","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ITacoswapV2Pair","name":"orig","type":"address"}],"name":"migrate","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ITacoswapV2Pair","name":"orig","type":"address"}],"name":"migrateLP","outputs":[{"internalType":"contract ITacoswapV2Pair","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"migrateUserInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"newChef","outputs":[{"internalType":"contract IETacoChef","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oldChef","outputs":[{"internalType":"contract IMasterChef","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sushiFactory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniFactory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040526000196006553480156200001757600080fd5b50604051620014cf380380620014cf8339810160408190526200003a9162000215565b6001600160a01b0388166200006c5760405162461bcd60e51b81526004016200006390620002f3565b60405180910390fd5b6001600160a01b038616620000955760405162461bcd60e51b81526004016200006390620002f3565b6001600160a01b038716620000be5760405162461bcd60e51b81526004016200006390620002f3565b6001600160a01b038516620000e75760405162461bcd60e51b81526004016200006390620002f3565b6001600160a01b038416620001105760405162461bcd60e51b81526004016200006390620002f3565b6001600160a01b038216620001395760405162461bcd60e51b81526004016200006390620002bc565b6001600160a01b038116620001625760405162461bcd60e51b81526004016200006390620002bc565b600780546001600160a01b03199081166001600160a01b039485161790915560088054821692841692909217909155600380548216958316959095179094556004805485169382169390931790925560008054841696831696909617909555600180548316948216949094179093556002805482169284169290921790915560058054909116929091169190911790556200032a565b80516001600160a01b03811681146200021057600080fd5b919050565b600080600080600080600080610100898b03121562000232578384fd5b6200023d89620001f8565b97506200024d60208a01620001f8565b96506200025d60408a01620001f8565b95506200026d60608a01620001f8565b94506200027d60808a01620001f8565b93506200028d60a08a01620001f8565b92506200029d60c08a01620001f8565b9150620002ad60e08a01620001f8565b90509295985092959890939650565b6020808252601d908201527f5461636f546f455461636f3a3a736574207a65726f2061646472657373000000604082015260600190565b6020808252601a908201527f4d69677261746f723a3a736574207a65726f2061646472657373000000000000604082015260600190565b611195806200033a6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806376771d4b1161007157806376771d4b146101265780638119c0651461012e578063b9f9d24c14610136578063bef1babd1461013e578063c45a015514610151578063ce5494bb14610159576100b4565b806322984b24146100b957806326aadbed146100d757806340dc0e37146100e157806344e2dc05146100f657806358421ed2146100fe5780636d161e131461011e575b600080fd5b6100c161016c565b6040516100ce9190610f3f565b60405180910390f35b6100df61017b565b005b6100e9610420565b6040516100ce9190611093565b6100c1610426565b61011161010c366004610e67565b610435565b6040516100ce9190610faa565b6100c161044a565b6100c1610459565b6100df610468565b6100c16105f9565b6100c161014c366004610e67565b610608565b6100c1610baa565b6100c1610167366004610e67565b610bb9565b6004546001600160a01b031681565b3360009081526009602052604090205460ff16156101b45760405162461bcd60e51b81526004016101ab9061105c565b60405180910390fd5b60008060009054906101000a90046001600160a01b03166001600160a01b031663081e3eda6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561020557600080fd5b505af1158015610219573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061023d9190610f04565b905060005b818110156103fa5760008054604051631526fe2760e01b81526001600160a01b0390911690631526fe279061027b908590600401611093565b608060405180830381600087803b15801561029557600080fd5b505af11580156102a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102cd9190610ea6565b600080546040516393f1a40b60e01b81529296509094506001600160a01b031692506393f1a40b9150610306908690339060040161109c565b6040805180830381600087803b15801561031f57600080fd5b505af1158015610333573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103579190610f1c565b509050806103665750506103e8565b6001546001600160a01b03166384348c5e84338464e8d4a5100061038a88836110f7565b61039491906110d7565b6040518563ffffffff1660e01b81526004016103b394939291906110b3565b600060405180830381600087803b1580156103cd57600080fd5b505af11580156103e1573d6000803e3d6000fd5b5050505050505b806103f281611116565b915050610242565b50610403610468565b50336000908152600960205260409020805460ff19166001179055565b60065481565b6001546001600160a01b031681565b60096020526000908152604090205460ff1681565b6002546001600160a01b031681565b6003546001600160a01b031681565b6007546040516370a0823160e01b81526000916001600160a01b0316906370a0823190610499903390600401610f3f565b60206040518083038186803b1580156104b157600080fd5b505afa1580156104c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e99190610f04565b6007546040516323b872dd60e01b81529192506001600160a01b0316906323b872dd9061051e90339030908690600401610f6d565b602060405180830381600087803b15801561053857600080fd5b505af115801561054c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105709190610ee4565b5060085460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906105a39033908590600401610f91565b602060405180830381600087803b1580156105bd57600080fd5b505af11580156105d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f59190610ee4565b5050565b6000546001600160a01b031681565b6001546000906001600160a01b031633146106355760405162461bcd60e51b81526004016101ab90610fb5565b6003546040805163c45a015560e01b815290516001600160a01b039283169285169163c45a0155916004808301926020929190829003018186803b15801561067c57600080fd5b505afa158015610690573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b49190610e8a565b6001600160a01b0316148061075f5750600460009054906101000a90046001600160a01b03166001600160a01b0316826001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561071c57600080fd5b505afa158015610730573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107549190610e8a565b6001600160a01b0316145b61077b5760405162461bcd60e51b81526004016101ab90611025565b6000826001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156107b657600080fd5b505afa1580156107ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ee9190610e8a565b90506000836001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561082b57600080fd5b505afa15801561083f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108639190610e8a565b60055460405163e6a4390560e01b81529192506000916001600160a01b039091169063e6a439059061089b9086908690600401610f53565b60206040518083038186803b1580156108b357600080fd5b505afa1580156108c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108eb9190610e8a565b90506001600160a01b038116610982576005546040516364e329cb60e11b81526001600160a01b039091169063c9c653969061092d9086908690600401610f53565b602060405180830381600087803b15801561094757600080fd5b505af115801561095b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097f9190610e8a565b90505b6040516370a0823160e01b81526000906001600160a01b038716906370a08231906109b1903390600401610f3f565b60206040518083038186803b1580156109c957600080fd5b505afa1580156109dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a019190610f04565b905080610a1357509250610ba5915050565b60068190556040516323b872dd60e01b81526001600160a01b038716906323b872dd90610a489033908a908690600401610f6d565b602060405180830381600087803b158015610a6257600080fd5b505af1158015610a76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9a9190610ee4565b5060405163226bf2d160e21b81526001600160a01b038716906389afcb4490610ac7908590600401610f3f565b6040805180830381600087803b158015610ae057600080fd5b505af1158015610af4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b189190610f1c565b50506040516335313c2160e11b81526001600160a01b03831690636a62784290610b46903390600401610f3f565b602060405180830381600087803b158015610b6057600080fd5b505af1158015610b74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b989190610f04565b5050600019600655925050505b919050565b6005546001600160a01b031681565b600080546001600160a01b03163314610be45760405162461bcd60e51b81526004016101ab90610fe3565b6040516370a0823160e01b81526000906001600160a01b038416906370a0823190610c13903390600401610f3f565b60206040518083038186803b158015610c2b57600080fd5b505afa158015610c3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c639190610f04565b6002546040516315e292f560e21b81529192506000916001600160a01b039091169063578a4bd490610c99908790600401610f3f565b60206040518083038186803b158015610cb157600080fd5b505afa158015610cc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce99190610e8a565b60015460405163a69d4a8960e01b81529192506001600160a01b03169063a69d4a8990610d1a908490600401610f3f565b600060405180830381600087803b158015610d3457600080fd5b505af1158015610d48573d6000803e3d6000fd5b50506001546040516323b872dd60e01b81526001600160a01b0380891694506323b872dd9350610d819233929116908790600401610f6d565b602060405180830381600087803b158015610d9b57600080fd5b505af1158015610daf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd39190610ee4565b506001546000546040516323b872dd60e01b81526001600160a01b03808516936323b872dd93610e0d939183169216908790600401610f6d565b602060405180830381600087803b158015610e2757600080fd5b505af1158015610e3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5f9190610ee4565b509392505050565b600060208284031215610e78578081fd5b8135610e8381611147565b9392505050565b600060208284031215610e9b578081fd5b8151610e8381611147565b60008060008060808587031215610ebb578283fd5b8451610ec681611147565b60208601516040870151606090970151919890975090945092505050565b600060208284031215610ef5578081fd5b81518015158114610e83578182fd5b600060208284031215610f15578081fd5b5051919050565b60008060408385031215610f2e578182fd5b505080516020909101519092909150565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b6020808252601490820152733737ba10333937b69036b0b9ba32b91031b432b360611b604082015260600190565b60208082526022908201527f4d69677261746f723a206e6f742066726f6d206f6c64206d617374657220636860408201526132b360f11b606082015260800190565b6020808252601e908201527f4d69677261746f723a206e6f742066726f6d206f6c6420666163746f72790000604082015260600190565b6020808252601a908201527f4d69677261746f723a20416c7265616479206d69677261746564000000000000604082015260600190565b90815260200190565b9182526001600160a01b0316602082015260400190565b9384526001600160a01b039290921660208401526040830152606082015260800190565b6000826110f257634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561111157611111611131565b500290565b600060001982141561112a5761112a611131565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461115c57600080fd5b5056fea26469706673582212203302c6c9c2adc47c6fda187bf80d18714818b602a39f714df14a288f0696f2e564736f6c634300080000330000000000000000000000007f7710e0c7c5c0ff043963dd22c3988e8bdb7acc000000000000000000000000502c28f523636251beeff8bcd5023ecd1bbb8b3a000000000000000000000000e1e09b6e9ef88adddc655534775487cfe0afe0060000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f000000000000000000000000c0aee478e3658e2610c5f7a4a2e1777ce9e4f2ac00000000000000000000000088461adda3e00698eef255395e692ec89cde501400000000000000000000000041c028a4c1f461ebfc3af91619b240004ebad216000000000000000000000000fbbd3865ec81fcd1105219a51f0684cd288eca42
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100b45760003560e01c806376771d4b1161007157806376771d4b146101265780638119c0651461012e578063b9f9d24c14610136578063bef1babd1461013e578063c45a015514610151578063ce5494bb14610159576100b4565b806322984b24146100b957806326aadbed146100d757806340dc0e37146100e157806344e2dc05146100f657806358421ed2146100fe5780636d161e131461011e575b600080fd5b6100c161016c565b6040516100ce9190610f3f565b60405180910390f35b6100df61017b565b005b6100e9610420565b6040516100ce9190611093565b6100c1610426565b61011161010c366004610e67565b610435565b6040516100ce9190610faa565b6100c161044a565b6100c1610459565b6100df610468565b6100c16105f9565b6100c161014c366004610e67565b610608565b6100c1610baa565b6100c1610167366004610e67565b610bb9565b6004546001600160a01b031681565b3360009081526009602052604090205460ff16156101b45760405162461bcd60e51b81526004016101ab9061105c565b60405180910390fd5b60008060009054906101000a90046001600160a01b03166001600160a01b031663081e3eda6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561020557600080fd5b505af1158015610219573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061023d9190610f04565b905060005b818110156103fa5760008054604051631526fe2760e01b81526001600160a01b0390911690631526fe279061027b908590600401611093565b608060405180830381600087803b15801561029557600080fd5b505af11580156102a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102cd9190610ea6565b600080546040516393f1a40b60e01b81529296509094506001600160a01b031692506393f1a40b9150610306908690339060040161109c565b6040805180830381600087803b15801561031f57600080fd5b505af1158015610333573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103579190610f1c565b509050806103665750506103e8565b6001546001600160a01b03166384348c5e84338464e8d4a5100061038a88836110f7565b61039491906110d7565b6040518563ffffffff1660e01b81526004016103b394939291906110b3565b600060405180830381600087803b1580156103cd57600080fd5b505af11580156103e1573d6000803e3d6000fd5b5050505050505b806103f281611116565b915050610242565b50610403610468565b50336000908152600960205260409020805460ff19166001179055565b60065481565b6001546001600160a01b031681565b60096020526000908152604090205460ff1681565b6002546001600160a01b031681565b6003546001600160a01b031681565b6007546040516370a0823160e01b81526000916001600160a01b0316906370a0823190610499903390600401610f3f565b60206040518083038186803b1580156104b157600080fd5b505afa1580156104c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e99190610f04565b6007546040516323b872dd60e01b81529192506001600160a01b0316906323b872dd9061051e90339030908690600401610f6d565b602060405180830381600087803b15801561053857600080fd5b505af115801561054c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105709190610ee4565b5060085460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906105a39033908590600401610f91565b602060405180830381600087803b1580156105bd57600080fd5b505af11580156105d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f59190610ee4565b5050565b6000546001600160a01b031681565b6001546000906001600160a01b031633146106355760405162461bcd60e51b81526004016101ab90610fb5565b6003546040805163c45a015560e01b815290516001600160a01b039283169285169163c45a0155916004808301926020929190829003018186803b15801561067c57600080fd5b505afa158015610690573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b49190610e8a565b6001600160a01b0316148061075f5750600460009054906101000a90046001600160a01b03166001600160a01b0316826001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561071c57600080fd5b505afa158015610730573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107549190610e8a565b6001600160a01b0316145b61077b5760405162461bcd60e51b81526004016101ab90611025565b6000826001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156107b657600080fd5b505afa1580156107ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ee9190610e8a565b90506000836001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561082b57600080fd5b505afa15801561083f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108639190610e8a565b60055460405163e6a4390560e01b81529192506000916001600160a01b039091169063e6a439059061089b9086908690600401610f53565b60206040518083038186803b1580156108b357600080fd5b505afa1580156108c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108eb9190610e8a565b90506001600160a01b038116610982576005546040516364e329cb60e11b81526001600160a01b039091169063c9c653969061092d9086908690600401610f53565b602060405180830381600087803b15801561094757600080fd5b505af115801561095b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097f9190610e8a565b90505b6040516370a0823160e01b81526000906001600160a01b038716906370a08231906109b1903390600401610f3f565b60206040518083038186803b1580156109c957600080fd5b505afa1580156109dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a019190610f04565b905080610a1357509250610ba5915050565b60068190556040516323b872dd60e01b81526001600160a01b038716906323b872dd90610a489033908a908690600401610f6d565b602060405180830381600087803b158015610a6257600080fd5b505af1158015610a76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9a9190610ee4565b5060405163226bf2d160e21b81526001600160a01b038716906389afcb4490610ac7908590600401610f3f565b6040805180830381600087803b158015610ae057600080fd5b505af1158015610af4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b189190610f1c565b50506040516335313c2160e11b81526001600160a01b03831690636a62784290610b46903390600401610f3f565b602060405180830381600087803b158015610b6057600080fd5b505af1158015610b74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b989190610f04565b5050600019600655925050505b919050565b6005546001600160a01b031681565b600080546001600160a01b03163314610be45760405162461bcd60e51b81526004016101ab90610fe3565b6040516370a0823160e01b81526000906001600160a01b038416906370a0823190610c13903390600401610f3f565b60206040518083038186803b158015610c2b57600080fd5b505afa158015610c3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c639190610f04565b6002546040516315e292f560e21b81529192506000916001600160a01b039091169063578a4bd490610c99908790600401610f3f565b60206040518083038186803b158015610cb157600080fd5b505afa158015610cc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce99190610e8a565b60015460405163a69d4a8960e01b81529192506001600160a01b03169063a69d4a8990610d1a908490600401610f3f565b600060405180830381600087803b158015610d3457600080fd5b505af1158015610d48573d6000803e3d6000fd5b50506001546040516323b872dd60e01b81526001600160a01b0380891694506323b872dd9350610d819233929116908790600401610f6d565b602060405180830381600087803b158015610d9b57600080fd5b505af1158015610daf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd39190610ee4565b506001546000546040516323b872dd60e01b81526001600160a01b03808516936323b872dd93610e0d939183169216908790600401610f6d565b602060405180830381600087803b158015610e2757600080fd5b505af1158015610e3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5f9190610ee4565b509392505050565b600060208284031215610e78578081fd5b8135610e8381611147565b9392505050565b600060208284031215610e9b578081fd5b8151610e8381611147565b60008060008060808587031215610ebb578283fd5b8451610ec681611147565b60208601516040870151606090970151919890975090945092505050565b600060208284031215610ef5578081fd5b81518015158114610e83578182fd5b600060208284031215610f15578081fd5b5051919050565b60008060408385031215610f2e578182fd5b505080516020909101519092909150565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b6020808252601490820152733737ba10333937b69036b0b9ba32b91031b432b360611b604082015260600190565b60208082526022908201527f4d69677261746f723a206e6f742066726f6d206f6c64206d617374657220636860408201526132b360f11b606082015260800190565b6020808252601e908201527f4d69677261746f723a206e6f742066726f6d206f6c6420666163746f72790000604082015260600190565b6020808252601a908201527f4d69677261746f723a20416c7265616479206d69677261746564000000000000604082015260600190565b90815260200190565b9182526001600160a01b0316602082015260400190565b9384526001600160a01b039290921660208401526040830152606082015260800190565b6000826110f257634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561111157611111611131565b500290565b600060001982141561112a5761112a611131565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461115c57600080fd5b5056fea26469706673582212203302c6c9c2adc47c6fda187bf80d18714818b602a39f714df14a288f0696f2e564736f6c63430008000033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000007f7710e0c7c5c0ff043963dd22c3988e8bdb7acc000000000000000000000000502c28f523636251beeff8bcd5023ecd1bbb8b3a000000000000000000000000e1e09b6e9ef88adddc655534775487cfe0afe0060000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f000000000000000000000000c0aee478e3658e2610c5f7a4a2e1777ce9e4f2ac00000000000000000000000088461adda3e00698eef255395e692ec89cde501400000000000000000000000041c028a4c1f461ebfc3af91619b240004ebad216000000000000000000000000fbbd3865ec81fcd1105219a51f0684cd288eca42
-----Decoded View---------------
Arg [0] : _oldChef (address): 0x7F7710e0c7C5C0FF043963dd22C3988e8bDb7AcC
Arg [1] : _newChef (address): 0x502C28F523636251BEEFf8bCd5023eCd1bBb8B3A
Arg [2] : _dummyMigrator (address): 0xE1E09B6E9EF88adDDc655534775487Cfe0AfE006
Arg [3] : _uniFactory (address): 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f
Arg [4] : _sushiFactory (address): 0xC0AEe478e3658e2610c5F7A4A2E1777cE9e4f2Ac
Arg [5] : _factory (address): 0x88461aDDA3E00698eEF255395e692EC89CdE5014
Arg [6] : tacoToken_ (address): 0x41C028a4C1F461eBFC3af91619b240004ebAD216
Arg [7] : etaco_ (address): 0xFBBD3865EC81fCD1105219A51F0684cd288EcA42
-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000007f7710e0c7c5c0ff043963dd22c3988e8bdb7acc
Arg [1] : 000000000000000000000000502c28f523636251beeff8bcd5023ecd1bbb8b3a
Arg [2] : 000000000000000000000000e1e09b6e9ef88adddc655534775487cfe0afe006
Arg [3] : 0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f
Arg [4] : 000000000000000000000000c0aee478e3658e2610c5f7a4a2e1777ce9e4f2ac
Arg [5] : 00000000000000000000000088461adda3e00698eef255395e692ec89cde5014
Arg [6] : 00000000000000000000000041c028a4c1f461ebfc3af91619b240004ebad216
Arg [7] : 000000000000000000000000fbbd3865ec81fcd1105219a51f0684cd288eca42
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
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.