Contract
0x044b75f554b886a065b9567891e45c79542d7357
1
Contract Overview
Balance:
0 GLMR
GLMR Value:
$0.00
My Name Tag:
Not Available, login to update
[ Download CSV Export ]
Contract Name:
AuctionCreation
Compiler Version
v0.6.12+commit.27d51765
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: UNLICENSED pragma solidity 0.6.12; import "../interfaces/IERC20.sol"; import "../Utils/SafeTransfer.sol"; interface IMisoTokenFactory { function createToken( uint256 _templateId, address payable _integratorFeeAccount, bytes calldata _data ) external payable returns (address token); } interface IPointList { function deployPointList( address _listOwner, address[] calldata _accounts, uint256[] calldata _amounts ) external payable returns (address pointList); } interface IMisoLauncher { function createLauncher( uint256 _templateId, address _token, uint256 _tokenSupply, address payable _integratorFeeAccount, bytes calldata _data ) external payable returns (address newLauncher); } interface IMisoMarket { function createMarket( uint256 _templateId, address _token, uint256 _tokenSupply, address payable _integratorFeeAccount, bytes calldata _data ) external payable returns (address newMarket); function setAuctionWallet(address payable _wallet) external; function addAdminRole(address _address) external; function getAuctionTemplate(uint256 _templateId) external view returns (address); } interface IAuctionTemplate { function marketTemplate() external view returns (uint256); } // Auction Creation Recipe // 1. Create Token // 2. Create Whitelist (Optional) // 3. Create Auction with token address and whitelist address // 4. Create Liquidity Launcher with auction and token address // 5. Set destination wallet of auction to liquidity launcher contract AuctionCreation is SafeTransfer { IMisoTokenFactory public misoTokenFactory; IPointList public pointListFactory; IMisoLauncher public misoLauncher; IMisoMarket public misoMarket; address public factory; constructor( IMisoTokenFactory _misoTokenFactory, IPointList _pointListFactory, IMisoLauncher _misoLauncher, IMisoMarket _misoMarket, address _factory ) public { misoTokenFactory = _misoTokenFactory; pointListFactory = _pointListFactory; misoLauncher = _misoLauncher; misoMarket = _misoMarket; factory = _factory; } function prepareMiso( bytes memory tokenFactoryData, address[] memory _accounts, uint256[] memory _amounts, bytes memory marketData, bytes memory launcherData ) external payable { require(_accounts.length == _amounts.length, '!len'); address token = createToken(tokenFactoryData); address pointList = createPointList(_accounts, _amounts); (address newMarket, uint256 tokenForSale) = createMarket(marketData, token, pointList); // Miso market has to give admin role to the user, since it's set to this contract initially // to allow the auction wallet to be set to launcher once it's been deployed IMisoMarket(newMarket).addAdminRole(msg.sender); createLauncher(launcherData, token, tokenForSale, newMarket); uint256 tokenBalanceRemaining = IERC20(token).balanceOf(address(this)); if (tokenBalanceRemaining > 0) { _safeTransfer(token, msg.sender, tokenBalanceRemaining); } } function createToken(bytes memory tokenFactoryData) internal returns (address token) { ( bool isDeployed, address deployedToken, uint256 _misoTokenFactoryTemplateId, string memory _name, string memory _symbol, uint256 _initialSupply ) = abi.decode(tokenFactoryData, (bool, address, uint256, string, string, uint256)); if (isDeployed) { token = deployedToken; IERC20(deployedToken).transferFrom(msg.sender, address(this), _initialSupply); } else { token = misoTokenFactory.createToken( _misoTokenFactoryTemplateId, address(0), abi.encode(_name, _symbol, msg.sender, _initialSupply) ); } IERC20(token).approve(address(misoMarket), _initialSupply); IERC20(token).approve(address(misoLauncher), _initialSupply); } function createPointList(address[] memory _accounts, uint256[] memory _amounts) internal returns (address pointList) { if (_accounts.length != 0) { pointList = pointListFactory.deployPointList(msg.sender, _accounts, _amounts); } } function createMarket( bytes memory marketData, address token, address pointList ) internal returns (address newMarket, uint256 tokenForSale) { (uint256 _marketTemplateId, bytes memory mData) = abi.decode(marketData, (uint256, bytes)); tokenForSale = getTokenForSale(_marketTemplateId, mData); newMarket = misoMarket.createMarket( _marketTemplateId, token, tokenForSale, address(0), abi.encodePacked(abi.encode(address(misoMarket), token), mData, abi.encode(address(this), pointList, msg.sender)) ); } function createLauncher( bytes memory launcherData, address token, uint256 tokenForSale, address newMarket ) internal returns (address newLauncher) { (uint256 _launcherTemplateId, uint256 _liquidityPercent, uint256 _locktime) = abi.decode( launcherData, (uint256, uint256, uint256) ); if(_liquidityPercent > 0) { newLauncher = misoLauncher.createLauncher( _launcherTemplateId, token, (tokenForSale * _liquidityPercent) / 10000, address(0), abi.encode(newMarket, factory, msg.sender, msg.sender, _liquidityPercent, _locktime) ); // Have to set auction wallet to the new launcher address AFTER the market is created // new launcher address is casted to payable to satisfy interface. IMisoMarket(newMarket).setAuctionWallet(payable(newLauncher)); } } function getTokenForSale(uint256 marketTemplateId, bytes memory mData) internal view returns (uint256 tokenForSale) { address auctionTemplate = misoMarket.getAuctionTemplate(marketTemplateId); uint256 auctionTemplateId = IAuctionTemplate(auctionTemplate).marketTemplate(); if (auctionTemplateId == 1) { (, tokenForSale) = abi.decode(mData, (uint256, uint256)); } else { tokenForSale = abi.decode(mData, (uint256)); } } }
pragma solidity 0.6.12; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); function transferFrom( address from, address to, uint256 amount ) external returns (bool); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; }
pragma solidity 0.6.12; contract SafeTransfer { address private constant ETH_ADDRESS = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE; /// @notice Event for token withdrawals. event TokensWithdrawn(address token, address to, uint256 amount); /// @dev Helper function to handle both ETH and ERC20 payments function _safeTokenPayment( address _token, address payable _to, uint256 _amount ) internal { if (address(_token) == ETH_ADDRESS) { _safeTransferETH(_to,_amount ); } else { _safeTransfer(_token, _to, _amount); } emit TokensWithdrawn(_token, _to, _amount); } /// @dev Helper function to handle both ETH and ERC20 payments function _tokenPayment( address _token, address payable _to, uint256 _amount ) internal { if (address(_token) == ETH_ADDRESS) { _to.transfer(_amount); } else { _safeTransfer(_token, _to, _amount); } emit TokensWithdrawn(_token, _to, _amount); } /// @dev Transfer helper from UniswapV2 Router function _safeApprove(address token, address to, uint value) internal { // bytes4(keccak256(bytes('approve(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED'); } /** * There are many non-compliant ERC20 tokens... this can handle most, adapted from UniSwap V2 * Im trying to make it a habit to put external calls last (reentrancy) * You can put this in an internal function if you like. */ function _safeTransfer( address token, address to, uint256 amount ) internal virtual { // solium-disable-next-line security/no-low-level-calls (bool success, bytes memory data) = token.call( // 0xa9059cbb = bytes4(keccak256("transfer(address,uint256)")) abi.encodeWithSelector(0xa9059cbb, to, amount) ); require(success && (data.length == 0 || abi.decode(data, (bool)))); // ERC20 Transfer failed } function _safeTransferFrom( address token, address from, uint256 amount ) internal virtual { // solium-disable-next-line security/no-low-level-calls (bool success, bytes memory data) = token.call( // 0x23b872dd = bytes4(keccak256("transferFrom(address,address,uint256)")) abi.encodeWithSelector(0x23b872dd, from, address(this), amount) ); require(success && (data.length == 0 || abi.decode(data, (bool)))); // ERC20 TransferFrom failed } function _safeTransferFrom(address token, address from, address to, uint value) internal { // bytes4(keccak256(bytes('transferFrom(address,address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED'); } function _safeTransferETH(address to, uint value) internal { (bool success,) = to.call{value:value}(new bytes(0)); require(success, 'TransferHelper: ETH_TRANSFER_FAILED'); } }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "metadata": { "useLiteralContent": true }, "libraries": {} }
[{"inputs":[{"internalType":"contract IMisoTokenFactory","name":"_misoTokenFactory","type":"address"},{"internalType":"contract IPointList","name":"_pointListFactory","type":"address"},{"internalType":"contract IMisoLauncher","name":"_misoLauncher","type":"address"},{"internalType":"contract IMisoMarket","name":"_misoMarket","type":"address"},{"internalType":"address","name":"_factory","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokensWithdrawn","type":"event"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"misoLauncher","outputs":[{"internalType":"contract IMisoLauncher","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"misoMarket","outputs":[{"internalType":"contract IMisoMarket","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"misoTokenFactory","outputs":[{"internalType":"contract IMisoTokenFactory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pointListFactory","outputs":[{"internalType":"contract IPointList","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"tokenFactoryData","type":"bytes"},{"internalType":"address[]","name":"_accounts","type":"address[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"},{"internalType":"bytes","name":"marketData","type":"bytes"},{"internalType":"bytes","name":"launcherData","type":"bytes"}],"name":"prepareMiso","outputs":[],"stateMutability":"payable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50604051611452380380611452833981810160405260a081101561003357600080fd5b508051602082015160408301516060840151608090940151600080546001600160a01b039586166001600160a01b03199182161790915560018054948616948216949094179093556002805492851692841692909217909155600380549484169483169490941790935560048054929093169116179055611399806100b96000396000f3fe6080604052600436106100555760003560e01c80630b1481291461005a57806327257e091461008b578063790528d2146100a0578063b811cefc146100b5578063c45a0155146100ca578063fa18022c146100df575b600080fd5b34801561006657600080fd5b5061006f610393565b604080516001600160a01b039092168252519081900360200190f35b34801561009757600080fd5b5061006f6103a2565b3480156100ac57600080fd5b5061006f6103b1565b3480156100c157600080fd5b5061006f6103c0565b3480156100d657600080fd5b5061006f6103cf565b610391600480360360a08110156100f557600080fd5b810190602081018135600160201b81111561010f57600080fd5b82018360208201111561012157600080fd5b803590602001918460018302840111600160201b8311171561014257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561019457600080fd5b8201836020820111156101a657600080fd5b803590602001918460208302840111600160201b831117156101c757600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561021657600080fd5b82018360208201111561022857600080fd5b803590602001918460208302840111600160201b8311171561024957600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561029857600080fd5b8201836020820111156102aa57600080fd5b803590602001918460018302840111600160201b831117156102cb57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561031d57600080fd5b82018360208201111561032f57600080fd5b803590602001918460018302840111600160201b8311171561035057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506103de945050505050565b005b6003546001600160a01b031681565b6002546001600160a01b031681565b6000546001600160a01b031681565b6001546001600160a01b031681565b6004546001600160a01b031681565b825184511461041d576040805162461bcd60e51b8152602060048083019190915260248201526310b632b760e11b604482015290519081900360640190fd5b600061042886610558565b905060006104368686610a9f565b9050600080610446868585610bba565b91509150816001600160a01b0316636595171c336040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b15801561049957600080fd5b505af11580156104ad573d6000803e3d6000fd5b505050506104bd85858385610efe565b506000846001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561050d57600080fd5b505afa158015610521573d6000803e3d6000fd5b505050506040513d602081101561053757600080fd5b50519050801561054c5761054c853383611104565b50505050505050505050565b60008060008060608060008780602001905160c081101561057857600080fd5b815160208301516040808501516060860180519251949693959194939182019284600160201b8211156105aa57600080fd5b9083019060208201858111156105bf57600080fd5b8251600160201b8111828201881017156105d857600080fd5b82525081516020918201929091019080838360005b838110156106055781810151838201526020016105ed565b50505050905090810190601f1680156106325780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b82111561065457600080fd5b90830190602082018581111561066957600080fd5b8251600160201b81118282018810171561068257600080fd5b82525081516020918201929091019080838360005b838110156106af578181015183820152602001610697565b50505050905090810190601f1680156106dc5780820380516001836020036101000a031916815260200191505b5060405260200151969c50949a509298509096509450919250508615905061078a57604080516323b872dd60e01b815233600482015230602482015260448101839052905195975087956001600160a01b038716916323b872dd9160648083019260209291908290030181600087803b15801561075857600080fd5b505af115801561076c573d6000803e3d6000fd5b505050506040513d602081101561078257600080fd5b5061098f9050565b60008054906101000a90046001600160a01b03166001600160a01b031663870837d785600086863387604051602001808060200180602001856001600160a01b03168152602001848152602001838103835287818151815260200191508051906020019080838360005b8381101561080c5781810151838201526020016107f4565b50505050905090810190601f1680156108395780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b8381101561086c578181015183820152602001610854565b50505050905090810190601f1680156108995780820380516001836020036101000a031916815260200191505b5096505050505050506040516020818303038152906040526040518463ffffffff1660e01b815260040180848152602001836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156109125781810151838201526020016108fa565b50505050905090810190601f16801561093f5780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b15801561096057600080fd5b505af1158015610974573d6000803e3d6000fd5b505050506040513d602081101561098a57600080fd5b505196505b6003546040805163095ea7b360e01b81526001600160a01b0392831660048201526024810184905290519189169163095ea7b3916044808201926020929091908290030181600087803b1580156109e557600080fd5b505af11580156109f9573d6000803e3d6000fd5b505050506040513d6020811015610a0f57600080fd5b50506002546040805163095ea7b360e01b81526001600160a01b0392831660048201526024810184905290519189169163095ea7b3916044808201926020929091908290030181600087803b158015610a6757600080fd5b505af1158015610a7b573d6000803e3d6000fd5b505050506040513d6020811015610a9157600080fd5b509698975050505050505050565b60008251600014610bb45760015460405163424599a360e01b815233600482018181526060602484019081528751606485015287516001600160a01b039095169463424599a394899389939092909160448101916084909101906020808801910280838360005b83811015610b1e578181015183820152602001610b06565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610b5d578181015183820152602001610b45565b5050505090500195505050505050602060405180830381600087803b158015610b8557600080fd5b505af1158015610b99573d6000803e3d6000fd5b505050506040513d6020811015610baf57600080fd5b505190505b92915050565b60008060006060868060200190516040811015610bd657600080fd5b815160208301805160405192949293830192919084600160201b821115610bfc57600080fd5b908301906020820185811115610c1157600080fd5b8251600160201b811182820188101715610c2a57600080fd5b82525081516020918201929091019080838360005b83811015610c57578181015183820152602001610c3f565b50505050905090810190601f168015610c845780820380516001836020036101000a031916815260200191505b5060405250505091509150610c998282611226565b600354604080516001600160a01b0392831660208083018290528b851683850152835180840385018152606084018552306080850152948b1660a08401523360c0808501919091528451808503909101815260e084019094528451959850909463aa1bd2f69488948d948b946000948b939261010001918291908601908083835b60208310610d395780518252601f199092019160209182019101610d1a565b51815160209384036101000a600019018019909216911617905286519190930192860191508083835b60208310610d815780518252601f199092019160209182019101610d62565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310610dc95780518252601f199092019160209182019101610daa565b6001836020036101000a03801982511681845116808217855250505050505090500193505050506040516020818303038152906040526040518663ffffffff1660e01b815260040180868152602001856001600160a01b03168152602001848152602001836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610e75578181015183820152602001610e5d565b50505050905090810190601f168015610ea25780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b158015610ec557600080fd5b505af1158015610ed9573d6000803e3d6000fd5b505050506040513d6020811015610eef57600080fd5b50519792965091945050505050565b600080600080878060200190516060811015610f1957600080fd5b5080516020820151604090920151909450909250905081156110f9576002546001600160a01b031663632cef9084896127108a8702600454604080516001600160a01b038e8116602080840191909152938116828401523360608301819052608083015260a08083018d905260c08084018d90528451808503909101815260e0808501958690528b901b6001600160e01b03191690945260e483018981529188166101048401529590940461012482018190526000610144830181905261016483019687528351610184840152835191969095939490926101a4019190850190808383895b83811015611016578181015183820152602001610ffe565b50505050905090810190601f1680156110435780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15801561106657600080fd5b505af115801561107a573d6000803e3d6000fd5b505050506040513d602081101561109057600080fd5b5051604080516326a1c88b60e21b81526001600160a01b038084166004830152915192965090871691639a87222c9160248082019260009290919082900301818387803b1580156110e057600080fd5b505af11580156110f4573d6000803e3d6000fd5b505050505b505050949350505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b602083106111815780518252601f199092019160209182019101611162565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111e3576040519150601f19603f3d011682016040523d82523d6000602084013e6111e8565b606091505b5091509150818015611216575080511580611216575080806020019051602081101561121357600080fd5b50515b61121f57600080fd5b5050505050565b60035460408051634b939ed760e01b815260048101859052905160009283926001600160a01b0390911691634b939ed791602480820192602092909190829003018186803b15801561127757600080fd5b505afa15801561128b573d6000803e3d6000fd5b505050506040513d60208110156112a157600080fd5b505160408051630d9f230760e11b815290519192506000916001600160a01b03841691631b3e460e916004808301926020929190829003018186803b1580156112e957600080fd5b505afa1580156112fd573d6000803e3d6000fd5b505050506040513d602081101561131357600080fd5b5051905060018114156113415783806020019051604081101561133557600080fd5b5060200151925061135b565b83806020019051602081101561135657600080fd5b505192505b50509291505056fea264697066735822122088b920938eb4f5932fd7dfcb3a0230fd11aa8aba8594ff6178bc9f0d3e43e25064736f6c634300060c00330000000000000000000000001dfe5ce9e3630f6d542187cbfb267c9aa1b31e110000000000000000000000007cf167390e2526bc03f3cf6852a7af1cec3e243d0000000000000000000000007af71799c40f952237eaa4d81a77c1af4912511300000000000000000000000018350b048ab366ed601ffdbc669110ecb36016f3000000000000000000000000c35dadb65012ec5796536bd9864ed8773abc74c4
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000001dfe5ce9e3630f6d542187cbfb267c9aa1b31e110000000000000000000000007cf167390e2526bc03f3cf6852a7af1cec3e243d0000000000000000000000007af71799c40f952237eaa4d81a77c1af4912511300000000000000000000000018350b048ab366ed601ffdbc669110ecb36016f3000000000000000000000000c35dadb65012ec5796536bd9864ed8773abc74c4
-----Decoded View---------------
Arg [0] : _misoTokenFactory (address): 0x1dfe5ce9e3630f6d542187cbfb267c9aa1b31e11
Arg [1] : _pointListFactory (address): 0x7cf167390e2526bc03f3cf6852a7af1cec3e243d
Arg [2] : _misoLauncher (address): 0x7af71799c40f952237eaa4d81a77c1af49125113
Arg [3] : _misoMarket (address): 0x18350b048ab366ed601ffdbc669110ecb36016f3
Arg [4] : _factory (address): 0xc35dadb65012ec5796536bd9864ed8773abc74c4
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000001dfe5ce9e3630f6d542187cbfb267c9aa1b31e11
Arg [1] : 0000000000000000000000007cf167390e2526bc03f3cf6852a7af1cec3e243d
Arg [2] : 0000000000000000000000007af71799c40f952237eaa4d81a77c1af49125113
Arg [3] : 00000000000000000000000018350b048ab366ed601ffdbc669110ecb36016f3
Arg [4] : 000000000000000000000000c35dadb65012ec5796536bd9864ed8773abc74c4
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.