Source Code
Overview
POL Balance
Token Holdings
More Info
ContractCreator
Multichain Info
N/A
Latest 25 from a total of 54 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Ico Deployer | 19624654 | 2 days ago | IN | 0 POL | 0.00079941 | ||||
Set Ico Deployer | 19416669 | 7 days ago | IN | 0 POL | 0.00102189 | ||||
Set Dev Perc | 18858826 | 21 days ago | IN | 0 POL | 0.0069332 | ||||
Set Marketplace ... | 18858793 | 21 days ago | IN | 0 POL | 0.00195042 | ||||
Withdraw Gas | 18858789 | 21 days ago | IN | 0 POL | 0.00428174 | ||||
Set Marketplace ... | 18858737 | 21 days ago | IN | 0 POL | 0.00306621 | ||||
Set Gas Fee | 18857872 | 21 days ago | IN | 0 POL | 0.00194443 | ||||
Set Penalty | 18811832 | 22 days ago | IN | 0 POL | 0.00104356 | ||||
Set R3 | 18778044 | 23 days ago | IN | 0 POL | 0.00106879 | ||||
Set R2 | 18778040 | 23 days ago | IN | 0 POL | 0.00106872 | ||||
Set R1 | 18778029 | 23 days ago | IN | 0 POL | 0.00107033 | ||||
Set Nft Holder | 18739952 | 24 days ago | IN | 0 POL | 0.0010227 | ||||
Set Nft Holder | 18739928 | 24 days ago | IN | 0 POL | 0.0010227 | ||||
Set Air Dropper | 18739830 | 24 days ago | IN | 0 POL | 0.00102112 | ||||
Set Air Dropper | 18739770 | 24 days ago | IN | 0 POL | 0.00102112 | ||||
Set Dev Perc | 18329418 | 34 days ago | IN | 0 POL | 0.00339244 | ||||
Set Dev Perc | 18329269 | 34 days ago | IN | 0 POL | 0.00252413 | ||||
Set Dev Perc | 18328808 | 34 days ago | IN | 0 POL | 0.00173694 | ||||
Set Dev Perc | 18328297 | 34 days ago | IN | 0 POL | 0.00173736 | ||||
Set Dev Perc | 18313702 | 35 days ago | IN | 0 POL | 0.00339244 | ||||
Set Dev Perc | 18313534 | 35 days ago | IN | 0 POL | 0.00339244 | ||||
Set Dev Perc | 18312283 | 35 days ago | IN | 0 POL | 0.00339244 | ||||
Set Dev Perc | 18310352 | 35 days ago | IN | 0 POL | 0.00339244 | ||||
Set Dev Perc | 18309872 | 35 days ago | IN | 0 POL | 0.00339244 | ||||
Set Dev Perc | 18297685 | 35 days ago | IN | 0 POL | 0.00339244 |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Bidnow_Setting
Compiler Version
v0.8.24+commit.e11b9ed9
Optimization Enabled:
Yes with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.24; import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; interface IMarketplace{ function withdrawFee(address collector)external; function availableFee() external returns(uint256); } contract Bidnow_Setting is Ownable { using SafeERC20 for IERC20; address public bidnow; address public factory_404; address public icoDeployer; address public marketplace; address public admin; address public dev; address public r1; address public r2; address public r3; address public airdropper; address public nftHolder; uint256 public penalty; uint256 public gas_fee; uint256 public buy_fee = 0; uint256 public sell_fee = 250; uint256 public devPerc = 3000; uint256 internal constant BASE = 10000; bool public marketplace_freeze; event AuthorizedUpdated(address newAuthorized,bool isDev); event ReceiverUpdated(address previousReceiver, uint8 index); event PenaltyUpdated(uint256 perc); event MarketplaceStatusUpdated(bool status); event GasFeeUpdated(uint256 fee); event BuyFeeUpdated(uint256 fee); event SellFeeUpdated(uint256 fee); event DevPercUpdated(uint256 perc); event WithdrawGasFee(uint256 total); constructor(address _admin, address _dev,address _bn,address _nft,address _r1,address _r2,address _r3,address _ad) Ownable(msg.sender) { admin = _admin; dev= _dev; bidnow = _bn; nftHolder = _nft; penalty = 3000; r1 = _r1; r1 = _r2; r1 = _r3; airdropper = _ad; } modifier onlyAuthorized() { require( msg.sender == admin || msg.sender == dev || msg.sender == owner(), "Bidnow_Setting: Unauthorized" ); _; } function setIcoDeployer(address _icoDeployer) external onlyAuthorized { require(_icoDeployer != address(0), "Bidnow_Setting: Zero address provided"); require(_icoDeployer != icoDeployer, "Bidnow_Setting: Same address provided"); icoDeployer = _icoDeployer; } function setFactory(address _factory) external onlyAuthorized { require(_factory != address(0), "Bidnow_Setting: Zero address provided"); require(_factory != factory_404, "Bidnow_Setting: Same address provided"); factory_404 = _factory; } function setMarketplace(address _marketplace) external onlyAuthorized { require(_marketplace != address(0), "Bidnow_Setting: Zero address provided"); require(_marketplace != marketplace, "Bidnow_Setting: Same address provided"); marketplace = _marketplace; } function setNftHolder(address _nft) external onlyAuthorized { require(_nft != address(0), "Bidnow_Setting: Zero address provided"); require(_nft != nftHolder, "Bidnow_Setting: Same address provided"); nftHolder = _nft; } function setAirDropper(address _airdrop) external onlyAuthorized { require(_airdrop != address(0), "Bidnow_Setting: Zero address provided"); require(_airdrop != airdropper, "Bidnow_Setting: Same address provided"); airdropper = _airdrop; } function setAdmin(address _admin) external onlyAuthorized { require(_admin != address(0), "Bidnow_Setting: Zero address provided"); require(_admin != admin, "Bidnow_Setting: Same address provided"); admin = _admin; emit AuthorizedUpdated(admin, false); } function setDev(address _dev) external onlyAuthorized { require(_dev != address(0), "Bidnow_Setting: Zero address provided"); require(_dev != dev, "Bidnow_Setting: Same address provided"); dev = _dev; emit AuthorizedUpdated(dev, true); } function setR1(address _r1) external onlyAuthorized { require(_r1 != address(0), "Bidnow_Setting: Zero address provided"); require(_r1 != r1, "Bidnow_Setting: Same address provided"); r1 = _r1; emit ReceiverUpdated(r1, 1); } function setR2(address _r2) external onlyAuthorized { require(_r2 != address(0), "Bidnow_Setting: Zero address provided"); require(_r2 != r2, "Bidnow_Setting: Same address provided"); r2 = _r2; emit ReceiverUpdated(r2, 2); } function setR3(address _r3) external onlyAuthorized { require(_r3 != address(0), "Bidnow_Setting: Zero address provided"); require(_r3 != r3, "Bidnow_Setting: Same address provided"); r3 = _r3; emit ReceiverUpdated(r3, 3); } function setPenalty(uint256 _penalty) external onlyAuthorized { require(_penalty > 0 && _penalty <= 10000, "Bidnow_Setting: Penalty Fee Error"); penalty = _penalty; emit PenaltyUpdated(_penalty); } function setGasFee(uint256 _fee) external onlyAuthorized { require(_fee >= 0, "Bidnow_Setting: Gas Fee Error"); gas_fee = _fee; emit GasFeeUpdated(_fee); } function setBuyFee(uint256 _fee) external onlyAuthorized { require(_fee >= 0 && _fee <= 10000, "Bidnow_Setting: Buy Fee Error"); buy_fee = _fee; emit BuyFeeUpdated(_fee); } function setSellFee(uint256 _fee) external onlyAuthorized { require(_fee >= 0 && _fee <= 10000, "Bidnow_Setting: Buy Fee Error"); sell_fee = _fee; emit SellFeeUpdated(_fee); } function setDevPerc(uint256 _devPerc) external onlyAuthorized { require(_devPerc >= 0 && _devPerc <= 10000, "Bidnow_Setting: Dev Perc Error"); if(IERC20(bidnow).balanceOf(address(this)) > 0){ withdrawGas(); } if(IMarketplace(marketplace).availableFee() > 0){ IMarketplace(marketplace).withdrawFee(r3); } devPerc = _devPerc; emit DevPercUpdated(_devPerc); } function setMarketplacePause()external onlyAuthorized{ marketplace_freeze = !marketplace_freeze; emit MarketplaceStatusUpdated(marketplace_freeze); } function withdrawGas()public onlyAuthorized{ uint256 total = IERC20(bidnow).balanceOf(address(this)); IERC20(bidnow).safeTransfer(dev,total* (devPerc) / BASE); IERC20(bidnow).safeTransfer(r3,total* (BASE - devPerc) / BASE); emit WithdrawGasFee(total); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol) pragma solidity ^0.8.20; import {Context} from "../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. * * The initial owner is set to the address provided by the deployer. 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; /** * @dev The caller account is not authorized to perform an operation. */ error OwnableUnauthorizedAccount(address account); /** * @dev The owner is not a valid owner account. (eg. `address(0)`) */ error OwnableInvalidOwner(address owner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the address provided by the deployer as the initial owner. */ constructor(address initialOwner) { if (initialOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(initialOwner); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { if (owner() != _msgSender()) { revert OwnableUnauthorizedAccount(_msgSender()); } } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(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 { if (newOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.1.0) (interfaces/IERC1363.sol) pragma solidity ^0.8.20; import {IERC20} from "./IERC20.sol"; import {IERC165} from "./IERC165.sol"; /** * @title IERC1363 * @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363]. * * Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract * after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction. */ interface IERC1363 is IERC20, IERC165 { /* * Note: the ERC-165 identifier for this interface is 0xb0202a11. * 0xb0202a11 === * bytes4(keccak256('transferAndCall(address,uint256)')) ^ * bytes4(keccak256('transferAndCall(address,uint256,bytes)')) ^ * bytes4(keccak256('transferFromAndCall(address,address,uint256)')) ^ * bytes4(keccak256('transferFromAndCall(address,address,uint256,bytes)')) ^ * bytes4(keccak256('approveAndCall(address,uint256)')) ^ * bytes4(keccak256('approveAndCall(address,uint256,bytes)')) */ /** * @dev Moves a `value` amount of tokens from the caller's account to `to` * and then calls {IERC1363Receiver-onTransferReceived} on `to`. * @param to The address which you want to transfer to. * @param value The amount of tokens to be transferred. * @return A boolean value indicating whether the operation succeeded unless throwing. */ function transferAndCall(address to, uint256 value) external returns (bool); /** * @dev Moves a `value` amount of tokens from the caller's account to `to` * and then calls {IERC1363Receiver-onTransferReceived} on `to`. * @param to The address which you want to transfer to. * @param value The amount of tokens to be transferred. * @param data Additional data with no specified format, sent in call to `to`. * @return A boolean value indicating whether the operation succeeded unless throwing. */ function transferAndCall(address to, uint256 value, bytes calldata data) external returns (bool); /** * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism * and then calls {IERC1363Receiver-onTransferReceived} on `to`. * @param from The address which you want to send tokens from. * @param to The address which you want to transfer to. * @param value The amount of tokens to be transferred. * @return A boolean value indicating whether the operation succeeded unless throwing. */ function transferFromAndCall(address from, address to, uint256 value) external returns (bool); /** * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism * and then calls {IERC1363Receiver-onTransferReceived} on `to`. * @param from The address which you want to send tokens from. * @param to The address which you want to transfer to. * @param value The amount of tokens to be transferred. * @param data Additional data with no specified format, sent in call to `to`. * @return A boolean value indicating whether the operation succeeded unless throwing. */ function transferFromAndCall(address from, address to, uint256 value, bytes calldata data) external returns (bool); /** * @dev Sets a `value` amount of tokens as the allowance of `spender` over the * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`. * @param spender The address which will spend the funds. * @param value The amount of tokens to be spent. * @return A boolean value indicating whether the operation succeeded unless throwing. */ function approveAndCall(address spender, uint256 value) external returns (bool); /** * @dev Sets a `value` amount of tokens as the allowance of `spender` over the * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`. * @param spender The address which will spend the funds. * @param value The amount of tokens to be spent. * @param data Additional data with no specified format, sent in call to `spender`. * @return A boolean value indicating whether the operation succeeded unless throwing. */ function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC165.sol) pragma solidity ^0.8.20; import {IERC165} from "../utils/introspection/IERC165.sol";
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC20.sol) pragma solidity ^0.8.20; import {IERC20} from "../token/ERC20/IERC20.sol";
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.20; /** * @dev Interface of the ERC-20 standard as defined in the ERC. */ interface IERC20 { /** * @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); /** * @dev Returns the value of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the value of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves a `value` amount of tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 value) 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 a `value` amount of tokens 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 value) external returns (bool); /** * @dev Moves a `value` amount of tokens from `from` to `to` using the * allowance mechanism. `value` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 value) external returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/utils/SafeERC20.sol) pragma solidity ^0.8.20; import {IERC20} from "../IERC20.sol"; import {IERC1363} from "../../../interfaces/IERC1363.sol"; import {Address} from "../../../utils/Address.sol"; /** * @title SafeERC20 * @dev Wrappers around ERC-20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { /** * @dev An operation with an ERC-20 token failed. */ error SafeERC20FailedOperation(address token); /** * @dev Indicates a failed `decreaseAllowance` request. */ error SafeERC20FailedDecreaseAllowance(address spender, uint256 currentAllowance, uint256 requestedDecrease); /** * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value, * non-reverting calls are assumed to be successful. */ function safeTransfer(IERC20 token, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeCall(token.transfer, (to, value))); } /** * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful. */ function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeCall(token.transferFrom, (from, to, value))); } /** * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value, * non-reverting calls are assumed to be successful. * * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the "client" * smart contract uses ERC-7674 to set temporary allowances, then the "client" smart contract should avoid using * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior. */ function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 oldAllowance = token.allowance(address(this), spender); forceApprove(token, spender, oldAllowance + value); } /** * @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no * value, non-reverting calls are assumed to be successful. * * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the "client" * smart contract uses ERC-7674 to set temporary allowances, then the "client" smart contract should avoid using * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior. */ function safeDecreaseAllowance(IERC20 token, address spender, uint256 requestedDecrease) internal { unchecked { uint256 currentAllowance = token.allowance(address(this), spender); if (currentAllowance < requestedDecrease) { revert SafeERC20FailedDecreaseAllowance(spender, currentAllowance, requestedDecrease); } forceApprove(token, spender, currentAllowance - requestedDecrease); } } /** * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value, * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval * to be set to zero before setting it to a non-zero value, such as USDT. * * NOTE: If the token implements ERC-7674, this function will not modify any temporary allowance. This function * only sets the "standard" allowance. Any temporary allowance will remain active, in addition to the value being * set here. */ function forceApprove(IERC20 token, address spender, uint256 value) internal { bytes memory approvalCall = abi.encodeCall(token.approve, (spender, value)); if (!_callOptionalReturnBool(token, approvalCall)) { _callOptionalReturn(token, abi.encodeCall(token.approve, (spender, 0))); _callOptionalReturn(token, approvalCall); } } /** * @dev Performs an {ERC1363} transferAndCall, with a fallback to the simple {ERC20} transfer if the target has no * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when * targeting contracts. * * Reverts if the returned value is other than `true`. */ function transferAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal { if (to.code.length == 0) { safeTransfer(token, to, value); } else if (!token.transferAndCall(to, value, data)) { revert SafeERC20FailedOperation(address(token)); } } /** * @dev Performs an {ERC1363} transferFromAndCall, with a fallback to the simple {ERC20} transferFrom if the target * has no code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when * targeting contracts. * * Reverts if the returned value is other than `true`. */ function transferFromAndCallRelaxed( IERC1363 token, address from, address to, uint256 value, bytes memory data ) internal { if (to.code.length == 0) { safeTransferFrom(token, from, to, value); } else if (!token.transferFromAndCall(from, to, value, data)) { revert SafeERC20FailedOperation(address(token)); } } /** * @dev Performs an {ERC1363} approveAndCall, with a fallback to the simple {ERC20} approve if the target has no * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when * targeting contracts. * * NOTE: When the recipient address (`to`) has no code (i.e. is an EOA), this function behaves as {forceApprove}. * Opposedly, when the recipient address (`to`) has code, this function only attempts to call {ERC1363-approveAndCall} * once without retrying, and relies on the returned value to be true. * * Reverts if the returned value is other than `true`. */ function approveAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal { if (to.code.length == 0) { forceApprove(token, to, value); } else if (!token.approveAndCall(to, value, data)) { revert SafeERC20FailedOperation(address(token)); } } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). * * This is a variant of {_callOptionalReturnBool} that reverts if call fails to meet the requirements. */ function _callOptionalReturn(IERC20 token, bytes memory data) private { uint256 returnSize; uint256 returnValue; assembly ("memory-safe") { let success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20) // bubble errors if iszero(success) { let ptr := mload(0x40) returndatacopy(ptr, 0, returndatasize()) revert(ptr, returndatasize()) } returnSize := returndatasize() returnValue := mload(0) } if (returnSize == 0 ? address(token).code.length == 0 : returnValue != 1) { revert SafeERC20FailedOperation(address(token)); } } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). * * This is a variant of {_callOptionalReturn} that silently catches all reverts and returns a bool instead. */ function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) { bool success; uint256 returnSize; uint256 returnValue; assembly ("memory-safe") { success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20) returnSize := returndatasize() returnValue := mload(0) } return success && (returnSize == 0 ? address(token).code.length > 0 : returnValue == 1); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.1.0) (utils/Address.sol) pragma solidity ^0.8.20; import {Errors} from "./Errors.sol"; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev There's no code at `target` (it is not a contract). */ error AddressEmptyCode(address target); /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { if (address(this).balance < amount) { revert Errors.InsufficientBalance(address(this).balance, amount); } (bool success, ) = recipient.call{value: amount}(""); if (!success) { revert Errors.FailedCall(); } } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason or custom error, it is bubbled * up by this function (like regular Solidity function calls). However, if * the call reverted with no returned reason, this function reverts with a * {Errors.FailedCall} error. * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue(target, data, 0); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { if (address(this).balance < value) { revert Errors.InsufficientBalance(address(this).balance, value); } (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, success, returndata); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, success, returndata); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata); } /** * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target * was not a contract or bubbling up the revert reason (falling back to {Errors.FailedCall}) in case * of an unsuccessful call. */ function verifyCallResultFromTarget( address target, bool success, bytes memory returndata ) internal view returns (bytes memory) { if (!success) { _revert(returndata); } else { // only check if target is a contract if the call was successful and the return data is empty // otherwise we already know that it was a contract if (returndata.length == 0 && target.code.length == 0) { revert AddressEmptyCode(target); } return returndata; } } /** * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the * revert reason or with a default {Errors.FailedCall} error. */ function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) { if (!success) { _revert(returndata); } else { return returndata; } } /** * @dev Reverts with returndata if present. Otherwise reverts with {Errors.FailedCall}. */ function _revert(bytes memory returndata) private pure { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly ("memory-safe") { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert Errors.FailedCall(); } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol) pragma solidity ^0.8.20; /** * @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) { return msg.data; } function _contextSuffixLength() internal view virtual returns (uint256) { return 0; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.1.0) (utils/Errors.sol) pragma solidity ^0.8.20; /** * @dev Collection of common custom errors used in multiple contracts * * IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library. * It is recommended to avoid relying on the error API for critical functionality. * * _Available since v5.1._ */ library Errors { /** * @dev The ETH balance of the account is not enough to perform the operation. */ error InsufficientBalance(uint256 balance, uint256 needed); /** * @dev A call to an address target failed. The target may have reverted. */ error FailedCall(); /** * @dev The deployment failed. */ error FailedDeployment(); /** * @dev A necessary precompile is missing. */ error MissingPrecompile(address); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol) pragma solidity ^0.8.20; /** * @dev Interface of the ERC-165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[ERC]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); }
{ "optimizer": { "enabled": true, "runs": 200 }, "evmVersion": "paris", "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_admin","type":"address"},{"internalType":"address","name":"_dev","type":"address"},{"internalType":"address","name":"_bn","type":"address"},{"internalType":"address","name":"_nft","type":"address"},{"internalType":"address","name":"_r1","type":"address"},{"internalType":"address","name":"_r2","type":"address"},{"internalType":"address","name":"_r3","type":"address"},{"internalType":"address","name":"_ad","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newAuthorized","type":"address"},{"indexed":false,"internalType":"bool","name":"isDev","type":"bool"}],"name":"AuthorizedUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"}],"name":"BuyFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"perc","type":"uint256"}],"name":"DevPercUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"}],"name":"GasFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"MarketplaceStatusUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"perc","type":"uint256"}],"name":"PenaltyUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousReceiver","type":"address"},{"indexed":false,"internalType":"uint8","name":"index","type":"uint8"}],"name":"ReceiverUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"}],"name":"SellFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"total","type":"uint256"}],"name":"WithdrawGasFee","type":"event"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"airdropper","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bidnow","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buy_fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dev","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devPerc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory_404","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gas_fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"icoDeployer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketplace","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketplace_freeze","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftHolder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"penalty","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"r1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"r2","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"r3","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sell_fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_admin","type":"address"}],"name":"setAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_airdrop","type":"address"}],"name":"setAirDropper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dev","type":"address"}],"name":"setDev","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_devPerc","type":"uint256"}],"name":"setDevPerc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_factory","type":"address"}],"name":"setFactory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"setGasFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_icoDeployer","type":"address"}],"name":"setIcoDeployer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketplace","type":"address"}],"name":"setMarketplace","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setMarketplacePause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_nft","type":"address"}],"name":"setNftHolder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_penalty","type":"uint256"}],"name":"setPenalty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_r1","type":"address"}],"name":"setR1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_r2","type":"address"}],"name":"setR2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_r3","type":"address"}],"name":"setR3","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawGas","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526000600e5560fa600f55610bb86010553480156200002157600080fd5b5060405162001a9d38038062001a9d83398101604081905262000044916200015f565b33806200006b57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6200007681620000f2565b50600580546001600160a01b03199081166001600160a01b039a8b1617909155600680548216988a169890981790975560018054881696891696909617909555600b80548716948816949094179093555050610bb8600c55600780548416918516919091179055600a8054909216921691909117905562000207565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200015a57600080fd5b919050565b600080600080600080600080610100898b0312156200017d57600080fd5b620001888962000142565b97506200019860208a0162000142565b9650620001a860408a0162000142565b9550620001b860608a0162000142565b9450620001c860808a0162000142565b9350620001d860a08a0162000142565b9250620001e860c08a0162000142565b9150620001f860e08a0162000142565b90509295985092959890939650565b61188680620002176000396000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c8063715018a61161013057806391cca3db116100b8578063c9d683891161007c578063c9d683891461046e578063d006996f14610481578063d477f05f14610494578063f2fde38b146104a7578063f851a440146104ba57600080fd5b806391cca3db1461040f57806395aacf2d146104225780639d9362c11461043f578063abc8c7af14610452578063abd545bf1461046557600080fd5b8063808ae0c2116100ff578063808ae0c2146103bc57806385f88462146103c55780638b4cee08146103d85780638bf6e410146103eb5780638da5cb5b146103fe57600080fd5b8063715018a61461038557806371c6dda61461038d57806373ad6c2d146103a057806376369b6d146103b357600080fd5b8063322c0e56116101b35780635de998ef116101825780635de998ef146103265780636064fcc814610339578063678edca31461034c5780636ca5b5b01461035f578063704b6c021461037257600080fd5b8063322c0e56146102e55780634a4b674a146102ed5780634aa8e725146103005780635bb478081461031357600080fd5b80631261795d116101fa5780631261795d1461029b57806312745fde146102a3578063162b51fc146102b6578063216d1c27146102bf5780632cafd607146102d257600080fd5b806302148e6c1461022c5780630bcbbd211461025c5780630cc835a31461026f5780630edd2ffc14610284575b600080fd5b60015461023f906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b60085461023f906001600160a01b031681565b61028261027d3660046116c5565b6104cd565b005b61028d600c5481565b604051908152602001610253565b6102826105b8565b60035461023f906001600160a01b031681565b61028d600e5481565b6102826102cd3660046116de565b610719565b60025461023f906001600160a01b031681565b610282610815565b6102826102fb3660046116c5565b6108b6565b61028261030e3660046116de565b6109a7565b6102826103213660046116de565b610a71565b6102826103343660046116de565b610b3b565b600b5461023f906001600160a01b031681565b61028261035a3660046116c5565b610c05565b60075461023f906001600160a01b031681565b6102826103803660046116de565b610c8e565b610282610d8a565b61028261039b3660046116de565b610d9e565b6102826103ae3660046116de565b610e9a565b61028d600d5481565b61028d60105481565b6102826103d33660046116de565b610f64565b6102826103e63660046116c5565b61102e565b60095461023f906001600160a01b031681565b6000546001600160a01b031661023f565b60065461023f906001600160a01b031681565b60115461042f9060ff1681565b6040519015158152602001610253565b61028261044d3660046116c5565b611109565b60045461023f906001600160a01b031681565b61028d600f5481565b600a5461023f906001600160a01b031681565b61028261048f3660046116de565b611344565b6102826104a23660046116de565b611440565b6102826104b53660046116de565b61153c565b60055461023f906001600160a01b031681565b6005546001600160a01b03163314806104f057506006546001600160a01b031633145b8061050557506000546001600160a01b031633145b61052a5760405162461bcd60e51b81526004016105219061170e565b60405180910390fd5b61271081111561057c5760405162461bcd60e51b815260206004820152601d60248201527f4269646e6f775f53657474696e673a2042757920466565204572726f720000006044820152606401610521565b600e8190556040518181527f7c1445c98b278c9970d007fca6048704bcb25af7cc4a04eb56565d9a9f149ca3906020015b60405180910390a150565b6005546001600160a01b03163314806105db57506006546001600160a01b031633145b806105f057506000546001600160a01b031633145b61060c5760405162461bcd60e51b81526004016105219061170e565b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610655573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106799190611745565b6006546010549192506106bd916001600160a01b0390911690612710906106a09085611774565b6106aa9190611791565b6001546001600160a01b0316919061157a565b6009546010546106e9916001600160a01b031690612710906106df90826117b3565b6106a09085611774565b6040518181527f34eac7dc260efca2d012cbf5845676e832fef3ca2b6acd359a22b4bcc66669f5906020016105ad565b6005546001600160a01b031633148061073c57506006546001600160a01b031633145b8061075157506000546001600160a01b031633145b61076d5760405162461bcd60e51b81526004016105219061170e565b6001600160a01b0381166107935760405162461bcd60e51b8152600401610521906117c6565b6007546001600160a01b03908116908216036107c15760405162461bcd60e51b81526004016105219061180b565b600780546001600160a01b0319166001600160a01b03831690811790915560408051918252600160208301527f552f1b11b90c123462824395e5885b8d231139442fd1686323e73568278b0c2391016105ad565b6005546001600160a01b031633148061083857506006546001600160a01b031633145b8061084d57506000546001600160a01b031633145b6108695760405162461bcd60e51b81526004016105219061170e565b6011805460ff8082161560ff1990921682179092556040519116151581527f9ff6574771b3821b5a8e085f0c9d60dae46175c8686480e4a75136ff6aee6ad29060200160405180910390a1565b6005546001600160a01b03163314806108d957506006546001600160a01b031633145b806108ee57506000546001600160a01b031633145b61090a5760405162461bcd60e51b81526004016105219061170e565b60008111801561091c57506127108111155b6109725760405162461bcd60e51b815260206004820152602160248201527f4269646e6f775f53657474696e673a2050656e616c747920466565204572726f6044820152603960f91b6064820152608401610521565b600c8190556040518181527fc831f5abc7bc27c011edea988b6e4e573af053efa7cfa703a1878827ec6acc10906020016105ad565b6005546001600160a01b03163314806109ca57506006546001600160a01b031633145b806109df57506000546001600160a01b031633145b6109fb5760405162461bcd60e51b81526004016105219061170e565b6001600160a01b038116610a215760405162461bcd60e51b8152600401610521906117c6565b600b546001600160a01b0390811690821603610a4f5760405162461bcd60e51b81526004016105219061180b565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331480610a9457506006546001600160a01b031633145b80610aa957506000546001600160a01b031633145b610ac55760405162461bcd60e51b81526004016105219061170e565b6001600160a01b038116610aeb5760405162461bcd60e51b8152600401610521906117c6565b6002546001600160a01b0390811690821603610b195760405162461bcd60e51b81526004016105219061180b565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331480610b5e57506006546001600160a01b031633145b80610b7357506000546001600160a01b031633145b610b8f5760405162461bcd60e51b81526004016105219061170e565b6001600160a01b038116610bb55760405162461bcd60e51b8152600401610521906117c6565b600a546001600160a01b0390811690821603610be35760405162461bcd60e51b81526004016105219061180b565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331480610c2857506006546001600160a01b031633145b80610c3d57506000546001600160a01b031633145b610c595760405162461bcd60e51b81526004016105219061170e565b600d8190556040518181527f902352d147b3be1f5ea44e05f50189ab64f06aa375bdb9eaecb7210cf1cf292a906020016105ad565b6005546001600160a01b0316331480610cb157506006546001600160a01b031633145b80610cc657506000546001600160a01b031633145b610ce25760405162461bcd60e51b81526004016105219061170e565b6001600160a01b038116610d085760405162461bcd60e51b8152600401610521906117c6565b6005546001600160a01b0390811690821603610d365760405162461bcd60e51b81526004016105219061180b565b600580546001600160a01b0319166001600160a01b03831690811790915560408051918252600060208301527f4baf71ac1b8b1858d7ab3d2f65eceedce776ac368d0e05e8f9e9f0bf7ea64e4f91016105ad565b610d926115d1565b610d9c60006115fe565b565b6005546001600160a01b0316331480610dc157506006546001600160a01b031633145b80610dd657506000546001600160a01b031633145b610df25760405162461bcd60e51b81526004016105219061170e565b6001600160a01b038116610e185760405162461bcd60e51b8152600401610521906117c6565b6009546001600160a01b0390811690821603610e465760405162461bcd60e51b81526004016105219061180b565b600980546001600160a01b0319166001600160a01b03831690811790915560408051918252600360208301527f552f1b11b90c123462824395e5885b8d231139442fd1686323e73568278b0c2391016105ad565b6005546001600160a01b0316331480610ebd57506006546001600160a01b031633145b80610ed257506000546001600160a01b031633145b610eee5760405162461bcd60e51b81526004016105219061170e565b6001600160a01b038116610f145760405162461bcd60e51b8152600401610521906117c6565b6004546001600160a01b0390811690821603610f425760405162461bcd60e51b81526004016105219061180b565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331480610f8757506006546001600160a01b031633145b80610f9c57506000546001600160a01b031633145b610fb85760405162461bcd60e51b81526004016105219061170e565b6001600160a01b038116610fde5760405162461bcd60e51b8152600401610521906117c6565b6003546001600160a01b039081169082160361100c5760405162461bcd60e51b81526004016105219061180b565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633148061105157506006546001600160a01b031633145b8061106657506000546001600160a01b031633145b6110825760405162461bcd60e51b81526004016105219061170e565b6127108111156110d45760405162461bcd60e51b815260206004820152601d60248201527f4269646e6f775f53657474696e673a2042757920466565204572726f720000006044820152606401610521565b600f8190556040518181527f495ee53ee22006979ebc689a00ed737d7c13b6419142f82dcaea4ed95ac1e780906020016105ad565b6005546001600160a01b031633148061112c57506006546001600160a01b031633145b8061114157506000546001600160a01b031633145b61115d5760405162461bcd60e51b81526004016105219061170e565b6127108111156111af5760405162461bcd60e51b815260206004820152601e60248201527f4269646e6f775f53657474696e673a204465762050657263204572726f7200006044820152606401610521565b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156111f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121c9190611745565b111561122a5761122a6105b8565b6000600460009054906101000a90046001600160a01b03166001600160a01b03166378c19a436040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611281573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a59190611745565b111561130f5760048054600954604051631ac3ddeb60e01b81526001600160a01b03918216938101939093521690631ac3ddeb90602401600060405180830381600087803b1580156112f657600080fd5b505af115801561130a573d6000803e3d6000fd5b505050505b60108190556040518181527f219173ce4c013b0e3e2a3d33cd226b53b57db400737cb99843b8aecd5a411b48906020016105ad565b6005546001600160a01b031633148061136757506006546001600160a01b031633145b8061137c57506000546001600160a01b031633145b6113985760405162461bcd60e51b81526004016105219061170e565b6001600160a01b0381166113be5760405162461bcd60e51b8152600401610521906117c6565b6008546001600160a01b03908116908216036113ec5760405162461bcd60e51b81526004016105219061180b565b600880546001600160a01b0319166001600160a01b03831690811790915560408051918252600260208301527f552f1b11b90c123462824395e5885b8d231139442fd1686323e73568278b0c2391016105ad565b6005546001600160a01b031633148061146357506006546001600160a01b031633145b8061147857506000546001600160a01b031633145b6114945760405162461bcd60e51b81526004016105219061170e565b6001600160a01b0381166114ba5760405162461bcd60e51b8152600401610521906117c6565b6006546001600160a01b03908116908216036114e85760405162461bcd60e51b81526004016105219061180b565b600680546001600160a01b0319166001600160a01b03831690811790915560408051918252600160208301527f4baf71ac1b8b1858d7ab3d2f65eceedce776ac368d0e05e8f9e9f0bf7ea64e4f91016105ad565b6115446115d1565b6001600160a01b03811661156e57604051631e4fbdf760e01b815260006004820152602401610521565b611577816115fe565b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526115cc90849061164e565b505050565b6000546001600160a01b03163314610d9c5760405163118cdaa760e01b8152336004820152602401610521565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080602060008451602086016000885af180611671576040513d6000823e3d81fd5b50506000513d91508115611689578060011415611696565b6001600160a01b0384163b155b156116bf57604051635274afe760e01b81526001600160a01b0385166004820152602401610521565b50505050565b6000602082840312156116d757600080fd5b5035919050565b6000602082840312156116f057600080fd5b81356001600160a01b038116811461170757600080fd5b9392505050565b6020808252601c908201527f4269646e6f775f53657474696e673a20556e617574686f72697a656400000000604082015260600190565b60006020828403121561175757600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761178b5761178b61175e565b92915050565b6000826117ae57634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561178b5761178b61175e565b60208082526025908201527f4269646e6f775f53657474696e673a205a65726f20616464726573732070726f6040820152641d9a59195960da1b606082015260800190565b60208082526025908201527f4269646e6f775f53657474696e673a2053616d6520616464726573732070726f6040820152641d9a59195960da1b60608201526080019056fea26469706673582212201cb0f02f8c5c845688454c7d40b880a0c48585d7826535a87a3982a4a730ed0064736f6c63430008180033000000000000000000000000f206fdf2ecc68f5b9a3b70272e9629c2869c1cd50000000000000000000000009229e14371b9e95703f3c49472f8f51d3b2e3046000000000000000000000000ada555fdbbc7e890792b29ba2f1e8ad0adf1cf9d000000000000000000000000c841d8c3504770785c71b4df9d93ec78d15b634a0000000000000000000000009229e14371b9e95703f3c49472f8f51d3b2e30460000000000000000000000009229e14371b9e95703f3c49472f8f51d3b2e30460000000000000000000000009229e14371b9e95703f3c49472f8f51d3b2e30460000000000000000000000009229e14371b9e95703f3c49472f8f51d3b2e3046
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102275760003560e01c8063715018a61161013057806391cca3db116100b8578063c9d683891161007c578063c9d683891461046e578063d006996f14610481578063d477f05f14610494578063f2fde38b146104a7578063f851a440146104ba57600080fd5b806391cca3db1461040f57806395aacf2d146104225780639d9362c11461043f578063abc8c7af14610452578063abd545bf1461046557600080fd5b8063808ae0c2116100ff578063808ae0c2146103bc57806385f88462146103c55780638b4cee08146103d85780638bf6e410146103eb5780638da5cb5b146103fe57600080fd5b8063715018a61461038557806371c6dda61461038d57806373ad6c2d146103a057806376369b6d146103b357600080fd5b8063322c0e56116101b35780635de998ef116101825780635de998ef146103265780636064fcc814610339578063678edca31461034c5780636ca5b5b01461035f578063704b6c021461037257600080fd5b8063322c0e56146102e55780634a4b674a146102ed5780634aa8e725146103005780635bb478081461031357600080fd5b80631261795d116101fa5780631261795d1461029b57806312745fde146102a3578063162b51fc146102b6578063216d1c27146102bf5780632cafd607146102d257600080fd5b806302148e6c1461022c5780630bcbbd211461025c5780630cc835a31461026f5780630edd2ffc14610284575b600080fd5b60015461023f906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b60085461023f906001600160a01b031681565b61028261027d3660046116c5565b6104cd565b005b61028d600c5481565b604051908152602001610253565b6102826105b8565b60035461023f906001600160a01b031681565b61028d600e5481565b6102826102cd3660046116de565b610719565b60025461023f906001600160a01b031681565b610282610815565b6102826102fb3660046116c5565b6108b6565b61028261030e3660046116de565b6109a7565b6102826103213660046116de565b610a71565b6102826103343660046116de565b610b3b565b600b5461023f906001600160a01b031681565b61028261035a3660046116c5565b610c05565b60075461023f906001600160a01b031681565b6102826103803660046116de565b610c8e565b610282610d8a565b61028261039b3660046116de565b610d9e565b6102826103ae3660046116de565b610e9a565b61028d600d5481565b61028d60105481565b6102826103d33660046116de565b610f64565b6102826103e63660046116c5565b61102e565b60095461023f906001600160a01b031681565b6000546001600160a01b031661023f565b60065461023f906001600160a01b031681565b60115461042f9060ff1681565b6040519015158152602001610253565b61028261044d3660046116c5565b611109565b60045461023f906001600160a01b031681565b61028d600f5481565b600a5461023f906001600160a01b031681565b61028261048f3660046116de565b611344565b6102826104a23660046116de565b611440565b6102826104b53660046116de565b61153c565b60055461023f906001600160a01b031681565b6005546001600160a01b03163314806104f057506006546001600160a01b031633145b8061050557506000546001600160a01b031633145b61052a5760405162461bcd60e51b81526004016105219061170e565b60405180910390fd5b61271081111561057c5760405162461bcd60e51b815260206004820152601d60248201527f4269646e6f775f53657474696e673a2042757920466565204572726f720000006044820152606401610521565b600e8190556040518181527f7c1445c98b278c9970d007fca6048704bcb25af7cc4a04eb56565d9a9f149ca3906020015b60405180910390a150565b6005546001600160a01b03163314806105db57506006546001600160a01b031633145b806105f057506000546001600160a01b031633145b61060c5760405162461bcd60e51b81526004016105219061170e565b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610655573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106799190611745565b6006546010549192506106bd916001600160a01b0390911690612710906106a09085611774565b6106aa9190611791565b6001546001600160a01b0316919061157a565b6009546010546106e9916001600160a01b031690612710906106df90826117b3565b6106a09085611774565b6040518181527f34eac7dc260efca2d012cbf5845676e832fef3ca2b6acd359a22b4bcc66669f5906020016105ad565b6005546001600160a01b031633148061073c57506006546001600160a01b031633145b8061075157506000546001600160a01b031633145b61076d5760405162461bcd60e51b81526004016105219061170e565b6001600160a01b0381166107935760405162461bcd60e51b8152600401610521906117c6565b6007546001600160a01b03908116908216036107c15760405162461bcd60e51b81526004016105219061180b565b600780546001600160a01b0319166001600160a01b03831690811790915560408051918252600160208301527f552f1b11b90c123462824395e5885b8d231139442fd1686323e73568278b0c2391016105ad565b6005546001600160a01b031633148061083857506006546001600160a01b031633145b8061084d57506000546001600160a01b031633145b6108695760405162461bcd60e51b81526004016105219061170e565b6011805460ff8082161560ff1990921682179092556040519116151581527f9ff6574771b3821b5a8e085f0c9d60dae46175c8686480e4a75136ff6aee6ad29060200160405180910390a1565b6005546001600160a01b03163314806108d957506006546001600160a01b031633145b806108ee57506000546001600160a01b031633145b61090a5760405162461bcd60e51b81526004016105219061170e565b60008111801561091c57506127108111155b6109725760405162461bcd60e51b815260206004820152602160248201527f4269646e6f775f53657474696e673a2050656e616c747920466565204572726f6044820152603960f91b6064820152608401610521565b600c8190556040518181527fc831f5abc7bc27c011edea988b6e4e573af053efa7cfa703a1878827ec6acc10906020016105ad565b6005546001600160a01b03163314806109ca57506006546001600160a01b031633145b806109df57506000546001600160a01b031633145b6109fb5760405162461bcd60e51b81526004016105219061170e565b6001600160a01b038116610a215760405162461bcd60e51b8152600401610521906117c6565b600b546001600160a01b0390811690821603610a4f5760405162461bcd60e51b81526004016105219061180b565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331480610a9457506006546001600160a01b031633145b80610aa957506000546001600160a01b031633145b610ac55760405162461bcd60e51b81526004016105219061170e565b6001600160a01b038116610aeb5760405162461bcd60e51b8152600401610521906117c6565b6002546001600160a01b0390811690821603610b195760405162461bcd60e51b81526004016105219061180b565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331480610b5e57506006546001600160a01b031633145b80610b7357506000546001600160a01b031633145b610b8f5760405162461bcd60e51b81526004016105219061170e565b6001600160a01b038116610bb55760405162461bcd60e51b8152600401610521906117c6565b600a546001600160a01b0390811690821603610be35760405162461bcd60e51b81526004016105219061180b565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331480610c2857506006546001600160a01b031633145b80610c3d57506000546001600160a01b031633145b610c595760405162461bcd60e51b81526004016105219061170e565b600d8190556040518181527f902352d147b3be1f5ea44e05f50189ab64f06aa375bdb9eaecb7210cf1cf292a906020016105ad565b6005546001600160a01b0316331480610cb157506006546001600160a01b031633145b80610cc657506000546001600160a01b031633145b610ce25760405162461bcd60e51b81526004016105219061170e565b6001600160a01b038116610d085760405162461bcd60e51b8152600401610521906117c6565b6005546001600160a01b0390811690821603610d365760405162461bcd60e51b81526004016105219061180b565b600580546001600160a01b0319166001600160a01b03831690811790915560408051918252600060208301527f4baf71ac1b8b1858d7ab3d2f65eceedce776ac368d0e05e8f9e9f0bf7ea64e4f91016105ad565b610d926115d1565b610d9c60006115fe565b565b6005546001600160a01b0316331480610dc157506006546001600160a01b031633145b80610dd657506000546001600160a01b031633145b610df25760405162461bcd60e51b81526004016105219061170e565b6001600160a01b038116610e185760405162461bcd60e51b8152600401610521906117c6565b6009546001600160a01b0390811690821603610e465760405162461bcd60e51b81526004016105219061180b565b600980546001600160a01b0319166001600160a01b03831690811790915560408051918252600360208301527f552f1b11b90c123462824395e5885b8d231139442fd1686323e73568278b0c2391016105ad565b6005546001600160a01b0316331480610ebd57506006546001600160a01b031633145b80610ed257506000546001600160a01b031633145b610eee5760405162461bcd60e51b81526004016105219061170e565b6001600160a01b038116610f145760405162461bcd60e51b8152600401610521906117c6565b6004546001600160a01b0390811690821603610f425760405162461bcd60e51b81526004016105219061180b565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331480610f8757506006546001600160a01b031633145b80610f9c57506000546001600160a01b031633145b610fb85760405162461bcd60e51b81526004016105219061170e565b6001600160a01b038116610fde5760405162461bcd60e51b8152600401610521906117c6565b6003546001600160a01b039081169082160361100c5760405162461bcd60e51b81526004016105219061180b565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633148061105157506006546001600160a01b031633145b8061106657506000546001600160a01b031633145b6110825760405162461bcd60e51b81526004016105219061170e565b6127108111156110d45760405162461bcd60e51b815260206004820152601d60248201527f4269646e6f775f53657474696e673a2042757920466565204572726f720000006044820152606401610521565b600f8190556040518181527f495ee53ee22006979ebc689a00ed737d7c13b6419142f82dcaea4ed95ac1e780906020016105ad565b6005546001600160a01b031633148061112c57506006546001600160a01b031633145b8061114157506000546001600160a01b031633145b61115d5760405162461bcd60e51b81526004016105219061170e565b6127108111156111af5760405162461bcd60e51b815260206004820152601e60248201527f4269646e6f775f53657474696e673a204465762050657263204572726f7200006044820152606401610521565b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156111f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121c9190611745565b111561122a5761122a6105b8565b6000600460009054906101000a90046001600160a01b03166001600160a01b03166378c19a436040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611281573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a59190611745565b111561130f5760048054600954604051631ac3ddeb60e01b81526001600160a01b03918216938101939093521690631ac3ddeb90602401600060405180830381600087803b1580156112f657600080fd5b505af115801561130a573d6000803e3d6000fd5b505050505b60108190556040518181527f219173ce4c013b0e3e2a3d33cd226b53b57db400737cb99843b8aecd5a411b48906020016105ad565b6005546001600160a01b031633148061136757506006546001600160a01b031633145b8061137c57506000546001600160a01b031633145b6113985760405162461bcd60e51b81526004016105219061170e565b6001600160a01b0381166113be5760405162461bcd60e51b8152600401610521906117c6565b6008546001600160a01b03908116908216036113ec5760405162461bcd60e51b81526004016105219061180b565b600880546001600160a01b0319166001600160a01b03831690811790915560408051918252600260208301527f552f1b11b90c123462824395e5885b8d231139442fd1686323e73568278b0c2391016105ad565b6005546001600160a01b031633148061146357506006546001600160a01b031633145b8061147857506000546001600160a01b031633145b6114945760405162461bcd60e51b81526004016105219061170e565b6001600160a01b0381166114ba5760405162461bcd60e51b8152600401610521906117c6565b6006546001600160a01b03908116908216036114e85760405162461bcd60e51b81526004016105219061180b565b600680546001600160a01b0319166001600160a01b03831690811790915560408051918252600160208301527f4baf71ac1b8b1858d7ab3d2f65eceedce776ac368d0e05e8f9e9f0bf7ea64e4f91016105ad565b6115446115d1565b6001600160a01b03811661156e57604051631e4fbdf760e01b815260006004820152602401610521565b611577816115fe565b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526115cc90849061164e565b505050565b6000546001600160a01b03163314610d9c5760405163118cdaa760e01b8152336004820152602401610521565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080602060008451602086016000885af180611671576040513d6000823e3d81fd5b50506000513d91508115611689578060011415611696565b6001600160a01b0384163b155b156116bf57604051635274afe760e01b81526001600160a01b0385166004820152602401610521565b50505050565b6000602082840312156116d757600080fd5b5035919050565b6000602082840312156116f057600080fd5b81356001600160a01b038116811461170757600080fd5b9392505050565b6020808252601c908201527f4269646e6f775f53657474696e673a20556e617574686f72697a656400000000604082015260600190565b60006020828403121561175757600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761178b5761178b61175e565b92915050565b6000826117ae57634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561178b5761178b61175e565b60208082526025908201527f4269646e6f775f53657474696e673a205a65726f20616464726573732070726f6040820152641d9a59195960da1b606082015260800190565b60208082526025908201527f4269646e6f775f53657474696e673a2053616d6520616464726573732070726f6040820152641d9a59195960da1b60608201526080019056fea26469706673582212201cb0f02f8c5c845688454c7d40b880a0c48585d7826535a87a3982a4a730ed0064736f6c63430008180033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000f206fdf2ecc68f5b9a3b70272e9629c2869c1cd50000000000000000000000009229e14371b9e95703f3c49472f8f51d3b2e3046000000000000000000000000ada555fdbbc7e890792b29ba2f1e8ad0adf1cf9d000000000000000000000000c841d8c3504770785c71b4df9d93ec78d15b634a0000000000000000000000009229e14371b9e95703f3c49472f8f51d3b2e30460000000000000000000000009229e14371b9e95703f3c49472f8f51d3b2e30460000000000000000000000009229e14371b9e95703f3c49472f8f51d3b2e30460000000000000000000000009229e14371b9e95703f3c49472f8f51d3b2e3046
-----Decoded View---------------
Arg [0] : _admin (address): 0xF206fdf2ECC68F5B9a3b70272E9629c2869c1Cd5
Arg [1] : _dev (address): 0x9229e14371b9e95703F3C49472f8F51D3b2e3046
Arg [2] : _bn (address): 0xada555FdbBc7E890792b29Ba2F1e8Ad0ADF1Cf9D
Arg [3] : _nft (address): 0xC841d8c3504770785C71B4Df9d93EC78D15B634A
Arg [4] : _r1 (address): 0x9229e14371b9e95703F3C49472f8F51D3b2e3046
Arg [5] : _r2 (address): 0x9229e14371b9e95703F3C49472f8F51D3b2e3046
Arg [6] : _r3 (address): 0x9229e14371b9e95703F3C49472f8F51D3b2e3046
Arg [7] : _ad (address): 0x9229e14371b9e95703F3C49472f8F51D3b2e3046
-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 000000000000000000000000f206fdf2ecc68f5b9a3b70272e9629c2869c1cd5
Arg [1] : 0000000000000000000000009229e14371b9e95703f3c49472f8f51d3b2e3046
Arg [2] : 000000000000000000000000ada555fdbbc7e890792b29ba2f1e8ad0adf1cf9d
Arg [3] : 000000000000000000000000c841d8c3504770785c71b4df9d93ec78d15b634a
Arg [4] : 0000000000000000000000009229e14371b9e95703f3c49472f8f51d3b2e3046
Arg [5] : 0000000000000000000000009229e14371b9e95703f3c49472f8f51d3b2e3046
Arg [6] : 0000000000000000000000009229e14371b9e95703f3c49472f8f51d3b2e3046
Arg [7] : 0000000000000000000000009229e14371b9e95703f3c49472f8f51d3b2e3046
Loading...
Loading
Loading...
Loading
Loading...
Loading
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.