Source Code
Latest 25 from a total of 494 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Pet Presell | 5620426 | 2851 days ago | IN | 0.66 ETH | 0.00039447 | ||||
| Pet Presell | 5620424 | 2851 days ago | IN | 0.66 ETH | 0.00012483 | ||||
| Pet Presell | 5620062 | 2851 days ago | IN | 0.66 ETH | 0.00019973 | ||||
| Pet Presell | 5620062 | 2851 days ago | IN | 0.66 ETH | 0.0002197 | ||||
| Pet Presell | 5620053 | 2851 days ago | IN | 0.66 ETH | 0.00019973 | ||||
| Pet Presell | 5620050 | 2851 days ago | IN | 0.66 ETH | 0.00017476 | ||||
| Pet Presell | 5618233 | 2852 days ago | IN | 0.66 ETH | 0.00143256 | ||||
| Pet Presell | 5618231 | 2852 days ago | IN | 0.66 ETH | 0.00147708 | ||||
| Pet Presell | 5617885 | 2852 days ago | IN | 0.66 ETH | 0.00196011 | ||||
| Pet Presell | 5617533 | 2852 days ago | IN | 0.66 ETH | 0.00246181 | ||||
| Pet Presell | 5617508 | 2852 days ago | IN | 0.66 ETH | 0.00246181 | ||||
| Pet Presell | 5617462 | 2852 days ago | IN | 0.66 ETH | 0.00131296 | ||||
| Pet Presell | 5617241 | 2852 days ago | IN | 0.66 ETH | 0.00246181 | ||||
| Pet Presell | 5617218 | 2852 days ago | IN | 0.66 ETH | 0.00194071 | ||||
| Pet Presell | 5617215 | 2852 days ago | IN | 0.99 ETH | 0.00024967 | ||||
| Pet Presell | 5617174 | 2852 days ago | IN | 0.66 ETH | 0.00262593 | ||||
| Pet Presell | 5616688 | 2852 days ago | IN | 0.66 ETH | 0.00174663 | ||||
| Pet Presell | 5616387 | 2852 days ago | IN | 0.66 ETH | 0.00137861 | ||||
| Pet Presell | 5616122 | 2852 days ago | IN | 0.66 ETH | 0.00139502 | ||||
| Pet Presell | 5615492 | 2852 days ago | IN | 0.66 ETH | 0.0008206 | ||||
| Pet Presell | 5615321 | 2852 days ago | IN | 0.66 ETH | 0.0008206 | ||||
| Pet Presell | 5614896 | 2852 days ago | IN | 0.66 ETH | 0.00116442 | ||||
| Pet Presell | 5614533 | 2852 days ago | IN | 0.66 ETH | 0.00164121 | ||||
| Pet Presell | 5614518 | 2852 days ago | IN | 0.66 ETH | 0.00194071 | ||||
| Pet Presell | 5614229 | 2852 days ago | IN | 0.66 ETH | 0.00116442 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 5618233 | 2852 days ago | 0.66 ETH | ||||
| Transfer | 5618231 | 2852 days ago | 0.66 ETH | ||||
| Transfer | 5617885 | 2852 days ago | 0.66 ETH | ||||
| Transfer | 5617533 | 2852 days ago | 0.66 ETH | ||||
| Transfer | 5617508 | 2852 days ago | 0.66 ETH | ||||
| Transfer | 5617462 | 2852 days ago | 0.66 ETH | ||||
| Transfer | 5617241 | 2852 days ago | 0.66 ETH | ||||
| Transfer | 5617218 | 2852 days ago | 0.66 ETH | ||||
| Transfer | 5617174 | 2852 days ago | 0.66 ETH | ||||
| Transfer | 5616688 | 2852 days ago | 0.66 ETH | ||||
| Transfer | 5616387 | 2852 days ago | 0.66 ETH | ||||
| Transfer | 5616122 | 2852 days ago | 0.66 ETH | ||||
| Transfer | 5615492 | 2852 days ago | 0.66 ETH | ||||
| Transfer | 5615321 | 2852 days ago | 0.66 ETH | ||||
| Transfer | 5614896 | 2852 days ago | 0.66 ETH | ||||
| Transfer | 5614533 | 2852 days ago | 0.66 ETH | ||||
| Transfer | 5614518 | 2852 days ago | 0.66 ETH | ||||
| Transfer | 5614229 | 2852 days ago | 0.66 ETH | ||||
| Transfer | 5614037 | 2852 days ago | 0.66 ETH | ||||
| Transfer | 5613514 | 2852 days ago | 0.66 ETH | ||||
| Transfer | 5613385 | 2853 days ago | 0.66 ETH | ||||
| Transfer | 5612941 | 2853 days ago | 0.66 ETH | ||||
| Transfer | 5612627 | 2853 days ago | 0.66 ETH | ||||
| Transfer | 5612575 | 2853 days ago | 0.66 ETH | ||||
| Transfer | 5612564 | 2853 days ago | 0.66 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
ActionPresell
Compiler Version
v0.4.21+commit.dfe3193c
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2018-04-10
*/
/* ==================================================================== */
/* Copyright (c) 2018 The ether.online Project. All rights reserved.
/*
/* https://ether.online The first RPG game of blockchain
/* ==================================================================== */
pragma solidity ^0.4.20;
/// @title ERC-165 Standard Interface Detection
/// @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-165.md
interface ERC165 {
function supportsInterface(bytes4 interfaceID) external view returns (bool);
}
/// @title ERC-721 Non-Fungible Token Standard
/// @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md
contract ERC721 is ERC165 {
event Transfer(address indexed _from, address indexed _to, uint256 _tokenId);
event Approval(address indexed _owner, address indexed _approved, uint256 _tokenId);
event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);
function balanceOf(address _owner) external view returns (uint256);
function ownerOf(uint256 _tokenId) external view returns (address);
function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) external;
function safeTransferFrom(address _from, address _to, uint256 _tokenId) external;
function transferFrom(address _from, address _to, uint256 _tokenId) external;
function approve(address _approved, uint256 _tokenId) external;
function setApprovalForAll(address _operator, bool _approved) external;
function getApproved(uint256 _tokenId) external view returns (address);
function isApprovedForAll(address _owner, address _operator) external view returns (bool);
}
/// @title ERC-721 Non-Fungible Token Standard
interface ERC721TokenReceiver {
function onERC721Received(address _from, uint256 _tokenId, bytes data) external returns(bytes4);
}
contract AccessAdmin {
bool public isPaused = false;
address public addrAdmin;
event AdminTransferred(address indexed preAdmin, address indexed newAdmin);
function AccessAdmin() public {
addrAdmin = msg.sender;
}
modifier onlyAdmin() {
require(msg.sender == addrAdmin);
_;
}
modifier whenNotPaused() {
require(!isPaused);
_;
}
modifier whenPaused {
require(isPaused);
_;
}
function setAdmin(address _newAdmin) external onlyAdmin {
require(_newAdmin != address(0));
AdminTransferred(addrAdmin, _newAdmin);
addrAdmin = _newAdmin;
}
function doPause() external onlyAdmin whenNotPaused {
isPaused = true;
}
function doUnpause() external onlyAdmin whenPaused {
isPaused = false;
}
}
contract AccessService is AccessAdmin {
address public addrService;
address public addrFinance;
modifier onlyService() {
require(msg.sender == addrService);
_;
}
modifier onlyFinance() {
require(msg.sender == addrFinance);
_;
}
function setService(address _newService) external {
require(msg.sender == addrService || msg.sender == addrAdmin);
require(_newService != address(0));
addrService = _newService;
}
function setFinance(address _newFinance) external {
require(msg.sender == addrFinance || msg.sender == addrAdmin);
require(_newFinance != address(0));
addrFinance = _newFinance;
}
}
contract WarToken is ERC721, AccessAdmin {
/// @dev The equipment info
struct Fashion {
uint16 protoId; // 0 Equipment ID
uint16 quality; // 1 Rarity: 1 Coarse/2 Good/3 Rare/4 Epic/5 Legendary
uint16 pos; // 2 Slots: 1 Weapon/2 Hat/3 Cloth/4 Pant/5 Shoes/9 Pets
uint16 health; // 3 Health
uint16 atkMin; // 4 Min attack
uint16 atkMax; // 5 Max attack
uint16 defence; // 6 Defennse
uint16 crit; // 7 Critical rate
uint16 isPercent; // 8 Attr value type
uint16 attrExt1; // 9 future stat 1
uint16 attrExt2; // 10 future stat 2
uint16 attrExt3; // 11 future stat 3
}
/// @dev All equipments tokenArray (not exceeding 2^32-1)
Fashion[] public fashionArray;
/// @dev Amount of tokens destroyed
uint256 destroyFashionCount;
/// @dev Equipment token ID vs owner address
mapping (uint256 => address) fashionIdToOwner;
/// @dev Equipments owner by the owner (array)
mapping (address => uint256[]) ownerToFashionArray;
/// @dev Equipment token ID search in owner array
mapping (uint256 => uint256) fashionIdToOwnerIndex;
/// @dev The authorized address for each WAR
mapping (uint256 => address) fashionIdToApprovals;
/// @dev The authorized operators for each address
mapping (address => mapping (address => bool)) operatorToApprovals;
/// @dev Trust contract
mapping (address => bool) actionContracts;
function setActionContract(address _actionAddr, bool _useful) external onlyAdmin {
actionContracts[_actionAddr] = _useful;
}
function getActionContract(address _actionAddr) external view onlyAdmin returns(bool) {
return actionContracts[_actionAddr];
}
/// @dev This emits when the approved address for an WAR is changed or reaffirmed.
event Approval(address indexed _owner, address indexed _approved, uint256 _tokenId);
/// @dev This emits when an operator is enabled or disabled for an owner.
event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);
/// @dev This emits when the equipment ownership changed
event Transfer(address indexed from, address indexed to, uint256 tokenId);
/// @dev This emits when the equipment created
event CreateFashion(address indexed owner, uint256 tokenId, uint16 protoId, uint16 quality, uint16 pos, uint16 createType);
/// @dev This emits when the equipment's attributes changed
event ChangeFashion(address indexed owner, uint256 tokenId, uint16 changeType);
/// @dev This emits when the equipment destroyed
event DeleteFashion(address indexed owner, uint256 tokenId, uint16 deleteType);
function WarToken() public {
addrAdmin = msg.sender;
fashionArray.length += 1;
}
// modifier
/// @dev Check if token ID is valid
modifier isValidToken(uint256 _tokenId) {
require(_tokenId >= 1 && _tokenId <= fashionArray.length);
require(fashionIdToOwner[_tokenId] != address(0));
_;
}
modifier canTransfer(uint256 _tokenId) {
address owner = fashionIdToOwner[_tokenId];
require(msg.sender == owner || msg.sender == fashionIdToApprovals[_tokenId] || operatorToApprovals[owner][msg.sender]);
_;
}
// ERC721
function supportsInterface(bytes4 _interfaceId) external view returns(bool) {
// ERC165 || ERC721 || ERC165^ERC721
return (_interfaceId == 0x01ffc9a7 || _interfaceId == 0x80ac58cd || _interfaceId == 0x8153916a) && (_interfaceId != 0xffffffff);
}
function name() public pure returns(string) {
return "WAR Token";
}
function symbol() public pure returns(string) {
return "WAR";
}
/// @dev Search for token quantity address
/// @param _owner Address that needs to be searched
/// @return Returns token quantity
function balanceOf(address _owner) external view returns(uint256) {
require(_owner != address(0));
return ownerToFashionArray[_owner].length;
}
/// @dev Find the owner of an WAR
/// @param _tokenId The tokenId of WAR
/// @return Give The address of the owner of this WAR
function ownerOf(uint256 _tokenId) external view /*isValidToken(_tokenId)*/ returns (address owner) {
return fashionIdToOwner[_tokenId];
}
/// @dev Transfers the ownership of an WAR from one address to another address
/// @param _from The current owner of the WAR
/// @param _to The new owner
/// @param _tokenId The WAR to transfer
/// @param data Additional data with no specified format, sent in call to `_to`
function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data)
external
whenNotPaused
{
_safeTransferFrom(_from, _to, _tokenId, data);
}
/// @dev Transfers the ownership of an WAR from one address to another address
/// @param _from The current owner of the WAR
/// @param _to The new owner
/// @param _tokenId The WAR to transfer
function safeTransferFrom(address _from, address _to, uint256 _tokenId)
external
whenNotPaused
{
_safeTransferFrom(_from, _to, _tokenId, "");
}
/// @dev Transfer ownership of an WAR, '_to' must be a vaild address, or the WAR will lost
/// @param _from The current owner of the WAR
/// @param _to The new owner
/// @param _tokenId The WAR to transfer
function transferFrom(address _from, address _to, uint256 _tokenId)
external
whenNotPaused
isValidToken(_tokenId)
canTransfer(_tokenId)
{
address owner = fashionIdToOwner[_tokenId];
require(owner != address(0));
require(_to != address(0));
require(owner == _from);
_transfer(_from, _to, _tokenId);
}
/// @dev Set or reaffirm the approved address for an WAR
/// @param _approved The new approved WAR controller
/// @param _tokenId The WAR to approve
function approve(address _approved, uint256 _tokenId)
external
whenNotPaused
{
address owner = fashionIdToOwner[_tokenId];
require(owner != address(0));
require(msg.sender == owner || operatorToApprovals[owner][msg.sender]);
fashionIdToApprovals[_tokenId] = _approved;
Approval(owner, _approved, _tokenId);
}
/// @dev Enable or disable approval for a third party ("operator") to manage all your asset.
/// @param _operator Address to add to the set of authorized operators.
/// @param _approved True if the operators is approved, false to revoke approval
function setApprovalForAll(address _operator, bool _approved)
external
whenNotPaused
{
operatorToApprovals[msg.sender][_operator] = _approved;
ApprovalForAll(msg.sender, _operator, _approved);
}
/// @dev Get the approved address for a single WAR
/// @param _tokenId The WAR to find the approved address for
/// @return The approved address for this WAR, or the zero address if there is none
function getApproved(uint256 _tokenId) external view isValidToken(_tokenId) returns (address) {
return fashionIdToApprovals[_tokenId];
}
/// @dev Query if an address is an authorized operator for another address
/// @param _owner The address that owns the WARs
/// @param _operator The address that acts on behalf of the owner
/// @return True if `_operator` is an approved operator for `_owner`, false otherwise
function isApprovedForAll(address _owner, address _operator) external view returns (bool) {
return operatorToApprovals[_owner][_operator];
}
/// @dev Count WARs tracked by this contract
/// @return A count of valid WARs tracked by this contract, where each one of
/// them has an assigned and queryable owner not equal to the zero address
function totalSupply() external view returns (uint256) {
return fashionArray.length - destroyFashionCount - 1;
}
/// @dev Do the real transfer with out any condition checking
/// @param _from The old owner of this WAR(If created: 0x0)
/// @param _to The new owner of this WAR
/// @param _tokenId The tokenId of the WAR
function _transfer(address _from, address _to, uint256 _tokenId) internal {
if (_from != address(0)) {
uint256 indexFrom = fashionIdToOwnerIndex[_tokenId];
uint256[] storage fsArray = ownerToFashionArray[_from];
require(fsArray[indexFrom] == _tokenId);
// If the WAR is not the element of array, change it to with the last
if (indexFrom != fsArray.length - 1) {
uint256 lastTokenId = fsArray[fsArray.length - 1];
fsArray[indexFrom] = lastTokenId;
fashionIdToOwnerIndex[lastTokenId] = indexFrom;
}
fsArray.length -= 1;
if (fashionIdToApprovals[_tokenId] != address(0)) {
delete fashionIdToApprovals[_tokenId];
}
}
// Give the WAR to '_to'
fashionIdToOwner[_tokenId] = _to;
ownerToFashionArray[_to].push(_tokenId);
fashionIdToOwnerIndex[_tokenId] = ownerToFashionArray[_to].length - 1;
Transfer(_from != address(0) ? _from : this, _to, _tokenId);
}
/// @dev Actually perform the safeTransferFrom
function _safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data)
internal
isValidToken(_tokenId)
canTransfer(_tokenId)
{
address owner = fashionIdToOwner[_tokenId];
require(owner != address(0));
require(_to != address(0));
require(owner == _from);
_transfer(_from, _to, _tokenId);
// Do the callback after everything is done to avoid reentrancy attack
uint256 codeSize;
assembly { codeSize := extcodesize(_to) }
if (codeSize == 0) {
return;
}
bytes4 retval = ERC721TokenReceiver(_to).onERC721Received(_from, _tokenId, data);
// bytes4(keccak256("onERC721Received(address,uint256,bytes)")) = 0xf0b9e5ba;
require(retval == 0xf0b9e5ba);
}
//----------------------------------------------------------------------------------------------------------
/// @dev Equipment creation
/// @param _owner Owner of the equipment created
/// @param _attrs Attributes of the equipment created
/// @return Token ID of the equipment created
function createFashion(address _owner, uint16[9] _attrs, uint16 _createType)
external
whenNotPaused
returns(uint256)
{
require(actionContracts[msg.sender]);
require(_owner != address(0));
uint256 newFashionId = fashionArray.length;
require(newFashionId < 4294967296);
fashionArray.length += 1;
Fashion storage fs = fashionArray[newFashionId];
fs.protoId = _attrs[0];
fs.quality = _attrs[1];
fs.pos = _attrs[2];
if (_attrs[3] != 0) {
fs.health = _attrs[3];
}
if (_attrs[4] != 0) {
fs.atkMin = _attrs[4];
fs.atkMax = _attrs[5];
}
if (_attrs[6] != 0) {
fs.defence = _attrs[6];
}
if (_attrs[7] != 0) {
fs.crit = _attrs[7];
}
if (_attrs[8] != 0) {
fs.isPercent = _attrs[8];
}
_transfer(0, _owner, newFashionId);
CreateFashion(_owner, newFashionId, _attrs[0], _attrs[1], _attrs[2], _createType);
return newFashionId;
}
/// @dev One specific attribute of the equipment modified
function _changeAttrByIndex(Fashion storage _fs, uint16 _index, uint16 _val) internal {
if (_index == 3) {
_fs.health = _val;
} else if(_index == 4) {
_fs.atkMin = _val;
} else if(_index == 5) {
_fs.atkMax = _val;
} else if(_index == 6) {
_fs.defence = _val;
} else if(_index == 7) {
_fs.crit = _val;
} else if(_index == 9) {
_fs.attrExt1 = _val;
} else if(_index == 10) {
_fs.attrExt2 = _val;
} else if(_index == 11) {
_fs.attrExt3 = _val;
}
}
/// @dev Equiment attributes modified (max 4 stats modified)
/// @param _tokenId Equipment Token ID
/// @param _idxArray Stats order that must be modified
/// @param _params Stat value that must be modified
/// @param _changeType Modification type such as enhance, socket, etc.
function changeFashionAttr(uint256 _tokenId, uint16[4] _idxArray, uint16[4] _params, uint16 _changeType)
external
whenNotPaused
isValidToken(_tokenId)
{
require(actionContracts[msg.sender]);
Fashion storage fs = fashionArray[_tokenId];
if (_idxArray[0] > 0) {
_changeAttrByIndex(fs, _idxArray[0], _params[0]);
}
if (_idxArray[1] > 0) {
_changeAttrByIndex(fs, _idxArray[1], _params[1]);
}
if (_idxArray[2] > 0) {
_changeAttrByIndex(fs, _idxArray[2], _params[2]);
}
if (_idxArray[3] > 0) {
_changeAttrByIndex(fs, _idxArray[3], _params[3]);
}
ChangeFashion(fashionIdToOwner[_tokenId], _tokenId, _changeType);
}
/// @dev Equipment destruction
/// @param _tokenId Equipment Token ID
/// @param _deleteType Destruction type, such as craft
function destroyFashion(uint256 _tokenId, uint16 _deleteType)
external
whenNotPaused
isValidToken(_tokenId)
{
require(actionContracts[msg.sender]);
address _from = fashionIdToOwner[_tokenId];
uint256 indexFrom = fashionIdToOwnerIndex[_tokenId];
uint256[] storage fsArray = ownerToFashionArray[_from];
require(fsArray[indexFrom] == _tokenId);
if (indexFrom != fsArray.length - 1) {
uint256 lastTokenId = fsArray[fsArray.length - 1];
fsArray[indexFrom] = lastTokenId;
fashionIdToOwnerIndex[lastTokenId] = indexFrom;
}
fsArray.length -= 1;
fashionIdToOwner[_tokenId] = address(0);
delete fashionIdToOwnerIndex[_tokenId];
destroyFashionCount += 1;
Transfer(_from, 0, _tokenId);
DeleteFashion(_from, _tokenId, _deleteType);
}
/// @dev Safe transfer by trust contracts
function safeTransferByContract(uint256 _tokenId, address _to)
external
whenNotPaused
{
require(actionContracts[msg.sender]);
require(_tokenId >= 1 && _tokenId <= fashionArray.length);
address owner = fashionIdToOwner[_tokenId];
require(owner != address(0));
require(_to != address(0));
require(owner != _to);
_transfer(owner, _to, _tokenId);
}
//----------------------------------------------------------------------------------------------------------
/// @dev Get fashion attrs by tokenId
function getFashion(uint256 _tokenId) external view isValidToken(_tokenId) returns (uint16[12] datas) {
Fashion storage fs = fashionArray[_tokenId];
datas[0] = fs.protoId;
datas[1] = fs.quality;
datas[2] = fs.pos;
datas[3] = fs.health;
datas[4] = fs.atkMin;
datas[5] = fs.atkMax;
datas[6] = fs.defence;
datas[7] = fs.crit;
datas[8] = fs.isPercent;
datas[9] = fs.attrExt1;
datas[10] = fs.attrExt2;
datas[11] = fs.attrExt3;
}
/// @dev Get tokenIds and flags by owner
function getOwnFashions(address _owner) external view returns(uint256[] tokens, uint32[] flags) {
require(_owner != address(0));
uint256[] storage fsArray = ownerToFashionArray[_owner];
uint256 length = fsArray.length;
tokens = new uint256[](length);
flags = new uint32[](length);
for (uint256 i = 0; i < length; ++i) {
tokens[i] = fsArray[i];
Fashion storage fs = fashionArray[fsArray[i]];
flags[i] = uint32(uint32(fs.protoId) * 100 + uint32(fs.quality) * 10 + fs.pos);
}
}
/// @dev WAR token info returned based on Token ID transfered (64 at most)
function getFashionsAttrs(uint256[] _tokens) external view returns(uint16[] attrs) {
uint256 length = _tokens.length;
require(length <= 64);
attrs = new uint16[](length * 11);
uint256 tokenId;
uint256 index;
for (uint256 i = 0; i < length; ++i) {
tokenId = _tokens[i];
if (fashionIdToOwner[tokenId] != address(0)) {
index = i * 11;
Fashion storage fs = fashionArray[tokenId];
attrs[index] = fs.health;
attrs[index + 1] = fs.atkMin;
attrs[index + 2] = fs.atkMax;
attrs[index + 3] = fs.defence;
attrs[index + 4] = fs.crit;
attrs[index + 5] = fs.isPercent;
attrs[index + 6] = fs.attrExt1;
attrs[index + 7] = fs.attrExt2;
attrs[index + 8] = fs.attrExt3;
}
}
}
}
contract ActionPresell is AccessService {
WarToken tokenContract;
mapping (uint16 => uint16) petPresellCounter;
mapping (address => uint16[]) presellLimit;
event PetPreSelled(address indexed buyer, uint16 protoId);
function ActionPresell(address _nftAddr) public {
addrAdmin = msg.sender;
addrService = msg.sender;
addrFinance = msg.sender;
tokenContract = WarToken(_nftAddr);
petPresellCounter[10001] = 50;
petPresellCounter[10002] = 30;
petPresellCounter[10003] = 50;
petPresellCounter[10004] = 30;
petPresellCounter[10005] = 30;
}
function() external payable {
}
function setWarTokenAddr(address _nftAddr) external onlyAdmin {
tokenContract = WarToken(_nftAddr);
}
function petPresell(uint16 _protoId)
external
payable
whenNotPaused
{
uint16 curSupply = petPresellCounter[_protoId];
require(curSupply > 0);
uint16[] storage buyArray = presellLimit[msg.sender];
uint256 curBuyCnt = buyArray.length;
require(curBuyCnt < 10);
uint256 payBack = 0;
if (_protoId == 10001) {
require(msg.value >= 0.66 ether);
payBack = (msg.value - 0.66 ether);
uint16[9] memory param1 = [10001, 5, 9, 40, 0, 0, 0, 0, 1]; // hp +40%
tokenContract.createFashion(msg.sender, param1, 1);
buyArray.push(10001);
} else if(_protoId == 10002) {
require(msg.value >= 0.99 ether);
payBack = (msg.value - 0.99 ether);
uint16[9] memory param2 = [10002, 5, 9, 0, 30, 30, 0, 0, 1]; // atk +30%
tokenContract.createFashion(msg.sender, param2, 1);
buyArray.push(10002);
} else if(_protoId == 10003) {
require(msg.value >= 0.66 ether);
payBack = (msg.value - 0.66 ether);
uint16[9] memory param3 = [10003, 5, 9, 0, 0, 0, 40, 0, 1]; // def +40%
tokenContract.createFashion(msg.sender, param3, 1);
buyArray.push(10003);
} else if(_protoId == 10004) {
require(msg.value >= 0.99 ether);
payBack = (msg.value - 0.99 ether);
uint16[9] memory param4 = [10004, 5, 9, 0, 0, 0, 0, 30, 1]; // crit +50%
tokenContract.createFashion(msg.sender, param4, 1);
buyArray.push(10004);
} else {
require(msg.value >= 0.99 ether);
payBack = (msg.value - 0.99 ether);
uint16[9] memory param5 = [10005, 5, 9, 20, 10, 10, 20, 0, 1]; // hp +20%, atk +10%, def +20%
tokenContract.createFashion(msg.sender, param5, 1);
buyArray.push(10005);
}
petPresellCounter[_protoId] = (curSupply - 1);
PetPreSelled(msg.sender, _protoId);
addrFinance.transfer(msg.value - payBack); // need 2300 gas -_-!
if (payBack > 0) {
msg.sender.transfer(payBack);
}
}
function withdraw()
external
{
require(msg.sender == addrFinance || msg.sender == addrAdmin);
addrFinance.transfer(this.balance);
}
function getPetCanPresellCount() external view returns (uint16[5] cntArray) {
cntArray[0] = petPresellCounter[10001];
cntArray[1] = petPresellCounter[10002];
cntArray[2] = petPresellCounter[10003];
cntArray[3] = petPresellCounter[10004];
cntArray[4] = petPresellCounter[10005];
}
function getBuyCount(address _owner) external view returns (uint32) {
return uint32(presellLimit[_owner].length);
}
function getBuyArray(address _owner) external view returns (uint16[]) {
uint16[] storage buyArray = presellLimit[_owner];
return buyArray;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":false,"inputs":[{"name":"_protoId","type":"uint16"}],"name":"petPresell","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"doUnpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"doPause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newAdmin","type":"address"}],"name":"setAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_nftAddr","type":"address"}],"name":"setWarTokenAddr","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getPetCanPresellCount","outputs":[{"name":"cntArray","type":"uint16[5]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"addrFinance","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newFinance","type":"address"}],"name":"setFinance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isPaused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newService","type":"address"}],"name":"setService","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"addrAdmin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"addrService","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"getBuyCount","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"getBuyArray","outputs":[{"name":"","type":"uint16[]"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_nftAddr","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"buyer","type":"address"},{"indexed":false,"name":"protoId","type":"uint16"}],"name":"PetPreSelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"preAdmin","type":"address"},{"indexed":true,"name":"newAdmin","type":"address"}],"name":"AdminTransferred","type":"event"}]Contract Creation Code
60606040526000805460ff19169055341561001957600080fd5b6040516020806112cb8339810160405280805160008054600160a060020a03338116610100810261010060a860020a03199384168117909316909217835560018054600160a060020a03199081168417909155600280548216909317909255600380549190941691161790915560046020527fd46743c2fa65df9b432f3be9771b67177cb202675d04f7d17146b12c68053d0f805461ffff1990811660329081179092557f21e0fcdea931fab45b080ed0027d4fdf8c9cd2b45394db36e13c82ca4e92da0280548216601e9081179091557fbc6c806d14996990b6fee39bf95cbc6f69b49c8178cb10842dcb20c01ad7d383805483169093179092557fb0ea0a6272ae45b32a24b6de30c67aefdbe5b6bd07ff2086866f616f478c505b80548216831790556127159092527f4a09a05d2362d42bb0eb42dbcde818d16b4ec6f481618534a2b97c4d9cb8180d8054909216179055505061114d8061017e6000396000f3006060604052600436106100c15763ffffffff60e060020a60003504166306b16a6c81146100c357806330efb8d3146100d25780633ccfd60b146100e557806367d0661d146100f8578063704b6c021461010b57806372c691b21461012a578063821919fd1461014957806382cb9df9146101945780639b8d3064146101c3578063b187bd26146101e2578063bf8bdac114610209578063bfae2f0e14610228578063cdd977e01461023b578063d489c0bf1461024e578063e5d3d9d714610286575b005b6100c161ffff600435166102f8565b34156100dd57600080fd5b6100c1610ba9565b34156100f057600080fd5b6100c1610be6565b341561010357600080fd5b6100c1610c5c565b341561011657600080fd5b6100c1600160a060020a0360043516610c9b565b341561013557600080fd5b6100c1600160a060020a0360043516610d46565b341561015457600080fd5b61015c610d95565b604051808260a080838360005b83811015610181578082015183820152602001610169565b5050505090500191505060405180910390f35b341561019f57600080fd5b6101a7610e7b565b604051600160a060020a03909116815260200160405180910390f35b34156101ce57600080fd5b6100c1600160a060020a0360043516610e8a565b34156101ed57600080fd5b6101f5610f09565b604051901515815260200160405180910390f35b341561021457600080fd5b6100c1600160a060020a0360043516610f12565b341561023357600080fd5b6101a7610f91565b341561024657600080fd5b6101a7610fa5565b341561025957600080fd5b61026d600160a060020a0360043516610fb4565b60405163ffffffff909116815260200160405180910390f35b341561029157600080fd5b6102a5600160a060020a0360043516610fcf565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156102e45780820151838201526020016102cc565b505050509050019250505060405180910390f35b600080600080610306611072565b61030e611072565b610316611072565b61031e611072565b610326611072565b60005460ff161561033657600080fd5b61ffff808b166000908152600460205260408120549091169950891161035b57600080fd5b600160a060020a033316600090815260056020526040902080549098509650600a871061038757600080fd5b600095508961ffff1661271114156104ff57670928ca80cfc200003410156103ae57600080fd5b670928ca80cfc200003403955061012060405190810160409081526127118252600560208301526009818301526028606083015260006080830181905260a0830181905260c0830181905260e083015260016101008301819052600354929750600160a060020a0390921691639cc477b291339189915160e060020a63ffffffff8616028152600160a060020a03841660048201908152906024018361012080838360005b8381101561046b578082015183820152602001610453565b505050509050018261ffff1681526020019350505050602060405180830381600087803b151561049a57600080fd5b5af115156104a757600080fd5b5050506040518051505087548890600181016104c3838261109b565b9160005260206000209060109182820401919006600202612711909190916101000a81548161ffff021916908361ffff16021790555050610abd565b8961ffff16612712141561067357670dbd2fc137a3000034101561052257600080fd5b670dbd2fc137a30000340395506101206040519081016040908152612712825260056020830152600981830152600060608301819052601e6080840181905260a084015260c0830181905260e083015260016101008301819052600354929650600160a060020a0390921691639cc477b291339188915160e060020a63ffffffff8616028152600160a060020a03841660048201908152906024018361012080838360005b838110156105df5780820151838201526020016105c7565b505050509050018261ffff1681526020019350505050602060405180830381600087803b151561060e57600080fd5b5af1151561061b57600080fd5b505050604051805150508754889060018101610637838261109b565b9160005260206000209060109182820401919006600202612712909190916101000a81548161ffff021916908361ffff16021790555050610abd565b8961ffff1661271314156107e757670928ca80cfc2000034101561069657600080fd5b670928ca80cfc200003403955061012060405190810160409081526127138252600560208301526009818301526000606083018190526080830181905260a08301819052602860c084015260e083015260016101008301819052600354929550600160a060020a0390921691639cc477b291339187915160e060020a63ffffffff8616028152600160a060020a03841660048201908152906024018361012080838360005b8381101561075357808201518382015260200161073b565b505050509050018261ffff1681526020019350505050602060405180830381600087803b151561078257600080fd5b5af1151561078f57600080fd5b5050506040518051505087548890600181016107ab838261109b565b9160005260206000209060109182820401919006600202612713909190916101000a81548161ffff021916908361ffff16021790555050610abd565b8961ffff16612714141561095b57670dbd2fc137a3000034101561080a57600080fd5b670dbd2fc137a300003403955061012060405190810160409081526127148252600560208301526009818301526000606083018190526080830181905260a0830181905260c0830152601e60e083015260016101008301819052600354929450600160a060020a0390921691639cc477b291339186915160e060020a63ffffffff8616028152600160a060020a03841660048201908152906024018361012080838360005b838110156108c75780820151838201526020016108af565b505050509050018261ffff1681526020019350505050602060405180830381600087803b15156108f657600080fd5b5af1151561090357600080fd5b50505060405180515050875488906001810161091f838261109b565b9160005260206000209060109182820401919006600202612714909190916101000a81548161ffff021916908361ffff16021790555050610abd565b670dbd2fc137a3000034101561097057600080fd5b670dbd2fc137a30000340395506101206040519081016040908152612715825260056020830152600981830152601460608301819052600a6080840181905260a084015260c0830152600060e083015260016101008301819052600354929350600160a060020a0390921691639cc477b291339185915160e060020a63ffffffff8616028152600160a060020a03841660048201908152906024018361012080838360005b83811015610a2d578082015183820152602001610a15565b505050509050018261ffff1681526020019350505050602060405180830381600087803b1515610a5c57600080fd5b5af11515610a6957600080fd5b505050604051805150508754889060018101610a85838261109b565b9160005260206000209060109182820401919006600202612715909190916101000a81548161ffff021916908361ffff160217905550505b61ffff8a811660009081526004602052604090819020805461ffff19166000198d019093169290921790915533600160a060020a0316907f3fe14c4b035f23907f7e97114b5e33083128a0dd22077eebd1266dec0d152a9f908c905161ffff909116815260200160405180910390a2600254600160a060020a03163487900380156108fc0290604051600060405180830381858888f193505050501515610b6357600080fd5b6000861115610b9d57600160a060020a03331686156108fc0287604051600060405180830381858888f193505050501515610b9d57600080fd5b50505050505050505050565b60005433600160a060020a039081166101009092041614610bc957600080fd5b60005460ff161515610bda57600080fd5b6000805460ff19169055565b60025433600160a060020a0390811691161480610c16575060005433600160a060020a0390811661010090920416145b1515610c2157600080fd5b600254600160a060020a039081169030163180156108fc0290604051600060405180830381858888f193505050501515610c5a57600080fd5b565b60005433600160a060020a039081166101009092041614610c7c57600080fd5b60005460ff1615610c8c57600080fd5b6000805460ff19166001179055565b60005433600160a060020a039081166101009092041614610cbb57600080fd5b600160a060020a0381161515610cd057600080fd5b600054600160a060020a03808316916101009004167ff8ccb027dfcd135e000e9d45e6cc2d662578a8825d4c45b5e32e0adf67e79ec660405160405180910390a360008054600160a060020a039092166101000274ffffffffffffffffffffffffffffffffffffffff0019909216919091179055565b60005433600160a060020a039081166101009092041614610d6657600080fd5b6003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b610d9d6110d4565b7fd46743c2fa65df9b432f3be9771b67177cb202675d04f7d17146b12c68053d0f5461ffff90811682527f21e0fcdea931fab45b080ed0027d4fdf8c9cd2b45394db36e13c82ca4e92da025481166020838101919091527fbc6c806d14996990b6fee39bf95cbc6f69b49c8178cb10842dcb20c01ad7d38354821660408401527fb0ea0a6272ae45b32a24b6de30c67aefdbe5b6bd07ff2086866f616f478c505b5482166060840152612715600052600490527f4a09a05d2362d42bb0eb42dbcde818d16b4ec6f481618534a2b97c4d9cb8180d5416608082015290565b600254600160a060020a031681565b60025433600160a060020a0390811691161480610eba575060005433600160a060020a0390811661010090920416145b1515610ec557600080fd5b600160a060020a0381161515610eda57600080fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60005460ff1681565b60015433600160a060020a0390811691161480610f42575060005433600160a060020a0390811661010090920416145b1515610f4d57600080fd5b600160a060020a0381161515610f6257600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000546101009004600160a060020a031681565b600154600160a060020a031681565b600160a060020a031660009081526005602052604090205490565b610fd76110ee565b600160a060020a03821660009081526005602090815260409182902080549092839282810201905190810160405280929190818152602001828054801561106557602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff168152602001906002019060208260010104928301926001038202915080841161102c5790505b5050505050915050919050565b6101206040519081016040526009815b6000815260001990910190602001816110825790505090565b8154818355818115116110cf57600f016010900481600f016010900483600052602060002091820191016110cf9190611100565b505050565b60a060405190810160405260008152600460208201611082565b60206040519081016040526000815290565b61111e91905b8082111561111a5760008155600101611106565b5090565b905600a165627a7a72305820a1124ba7f27f40e8634c2c73650cf4e886c7f448920784961ad5ee9661ffa71a0029000000000000000000000000da9c03dfd4d137f926c3cf6953cb951832eb08b2
Deployed Bytecode
0x6060604052600436106100c15763ffffffff60e060020a60003504166306b16a6c81146100c357806330efb8d3146100d25780633ccfd60b146100e557806367d0661d146100f8578063704b6c021461010b57806372c691b21461012a578063821919fd1461014957806382cb9df9146101945780639b8d3064146101c3578063b187bd26146101e2578063bf8bdac114610209578063bfae2f0e14610228578063cdd977e01461023b578063d489c0bf1461024e578063e5d3d9d714610286575b005b6100c161ffff600435166102f8565b34156100dd57600080fd5b6100c1610ba9565b34156100f057600080fd5b6100c1610be6565b341561010357600080fd5b6100c1610c5c565b341561011657600080fd5b6100c1600160a060020a0360043516610c9b565b341561013557600080fd5b6100c1600160a060020a0360043516610d46565b341561015457600080fd5b61015c610d95565b604051808260a080838360005b83811015610181578082015183820152602001610169565b5050505090500191505060405180910390f35b341561019f57600080fd5b6101a7610e7b565b604051600160a060020a03909116815260200160405180910390f35b34156101ce57600080fd5b6100c1600160a060020a0360043516610e8a565b34156101ed57600080fd5b6101f5610f09565b604051901515815260200160405180910390f35b341561021457600080fd5b6100c1600160a060020a0360043516610f12565b341561023357600080fd5b6101a7610f91565b341561024657600080fd5b6101a7610fa5565b341561025957600080fd5b61026d600160a060020a0360043516610fb4565b60405163ffffffff909116815260200160405180910390f35b341561029157600080fd5b6102a5600160a060020a0360043516610fcf565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156102e45780820151838201526020016102cc565b505050509050019250505060405180910390f35b600080600080610306611072565b61030e611072565b610316611072565b61031e611072565b610326611072565b60005460ff161561033657600080fd5b61ffff808b166000908152600460205260408120549091169950891161035b57600080fd5b600160a060020a033316600090815260056020526040902080549098509650600a871061038757600080fd5b600095508961ffff1661271114156104ff57670928ca80cfc200003410156103ae57600080fd5b670928ca80cfc200003403955061012060405190810160409081526127118252600560208301526009818301526028606083015260006080830181905260a0830181905260c0830181905260e083015260016101008301819052600354929750600160a060020a0390921691639cc477b291339189915160e060020a63ffffffff8616028152600160a060020a03841660048201908152906024018361012080838360005b8381101561046b578082015183820152602001610453565b505050509050018261ffff1681526020019350505050602060405180830381600087803b151561049a57600080fd5b5af115156104a757600080fd5b5050506040518051505087548890600181016104c3838261109b565b9160005260206000209060109182820401919006600202612711909190916101000a81548161ffff021916908361ffff16021790555050610abd565b8961ffff16612712141561067357670dbd2fc137a3000034101561052257600080fd5b670dbd2fc137a30000340395506101206040519081016040908152612712825260056020830152600981830152600060608301819052601e6080840181905260a084015260c0830181905260e083015260016101008301819052600354929650600160a060020a0390921691639cc477b291339188915160e060020a63ffffffff8616028152600160a060020a03841660048201908152906024018361012080838360005b838110156105df5780820151838201526020016105c7565b505050509050018261ffff1681526020019350505050602060405180830381600087803b151561060e57600080fd5b5af1151561061b57600080fd5b505050604051805150508754889060018101610637838261109b565b9160005260206000209060109182820401919006600202612712909190916101000a81548161ffff021916908361ffff16021790555050610abd565b8961ffff1661271314156107e757670928ca80cfc2000034101561069657600080fd5b670928ca80cfc200003403955061012060405190810160409081526127138252600560208301526009818301526000606083018190526080830181905260a08301819052602860c084015260e083015260016101008301819052600354929550600160a060020a0390921691639cc477b291339187915160e060020a63ffffffff8616028152600160a060020a03841660048201908152906024018361012080838360005b8381101561075357808201518382015260200161073b565b505050509050018261ffff1681526020019350505050602060405180830381600087803b151561078257600080fd5b5af1151561078f57600080fd5b5050506040518051505087548890600181016107ab838261109b565b9160005260206000209060109182820401919006600202612713909190916101000a81548161ffff021916908361ffff16021790555050610abd565b8961ffff16612714141561095b57670dbd2fc137a3000034101561080a57600080fd5b670dbd2fc137a300003403955061012060405190810160409081526127148252600560208301526009818301526000606083018190526080830181905260a0830181905260c0830152601e60e083015260016101008301819052600354929450600160a060020a0390921691639cc477b291339186915160e060020a63ffffffff8616028152600160a060020a03841660048201908152906024018361012080838360005b838110156108c75780820151838201526020016108af565b505050509050018261ffff1681526020019350505050602060405180830381600087803b15156108f657600080fd5b5af1151561090357600080fd5b50505060405180515050875488906001810161091f838261109b565b9160005260206000209060109182820401919006600202612714909190916101000a81548161ffff021916908361ffff16021790555050610abd565b670dbd2fc137a3000034101561097057600080fd5b670dbd2fc137a30000340395506101206040519081016040908152612715825260056020830152600981830152601460608301819052600a6080840181905260a084015260c0830152600060e083015260016101008301819052600354929350600160a060020a0390921691639cc477b291339185915160e060020a63ffffffff8616028152600160a060020a03841660048201908152906024018361012080838360005b83811015610a2d578082015183820152602001610a15565b505050509050018261ffff1681526020019350505050602060405180830381600087803b1515610a5c57600080fd5b5af11515610a6957600080fd5b505050604051805150508754889060018101610a85838261109b565b9160005260206000209060109182820401919006600202612715909190916101000a81548161ffff021916908361ffff160217905550505b61ffff8a811660009081526004602052604090819020805461ffff19166000198d019093169290921790915533600160a060020a0316907f3fe14c4b035f23907f7e97114b5e33083128a0dd22077eebd1266dec0d152a9f908c905161ffff909116815260200160405180910390a2600254600160a060020a03163487900380156108fc0290604051600060405180830381858888f193505050501515610b6357600080fd5b6000861115610b9d57600160a060020a03331686156108fc0287604051600060405180830381858888f193505050501515610b9d57600080fd5b50505050505050505050565b60005433600160a060020a039081166101009092041614610bc957600080fd5b60005460ff161515610bda57600080fd5b6000805460ff19169055565b60025433600160a060020a0390811691161480610c16575060005433600160a060020a0390811661010090920416145b1515610c2157600080fd5b600254600160a060020a039081169030163180156108fc0290604051600060405180830381858888f193505050501515610c5a57600080fd5b565b60005433600160a060020a039081166101009092041614610c7c57600080fd5b60005460ff1615610c8c57600080fd5b6000805460ff19166001179055565b60005433600160a060020a039081166101009092041614610cbb57600080fd5b600160a060020a0381161515610cd057600080fd5b600054600160a060020a03808316916101009004167ff8ccb027dfcd135e000e9d45e6cc2d662578a8825d4c45b5e32e0adf67e79ec660405160405180910390a360008054600160a060020a039092166101000274ffffffffffffffffffffffffffffffffffffffff0019909216919091179055565b60005433600160a060020a039081166101009092041614610d6657600080fd5b6003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b610d9d6110d4565b7fd46743c2fa65df9b432f3be9771b67177cb202675d04f7d17146b12c68053d0f5461ffff90811682527f21e0fcdea931fab45b080ed0027d4fdf8c9cd2b45394db36e13c82ca4e92da025481166020838101919091527fbc6c806d14996990b6fee39bf95cbc6f69b49c8178cb10842dcb20c01ad7d38354821660408401527fb0ea0a6272ae45b32a24b6de30c67aefdbe5b6bd07ff2086866f616f478c505b5482166060840152612715600052600490527f4a09a05d2362d42bb0eb42dbcde818d16b4ec6f481618534a2b97c4d9cb8180d5416608082015290565b600254600160a060020a031681565b60025433600160a060020a0390811691161480610eba575060005433600160a060020a0390811661010090920416145b1515610ec557600080fd5b600160a060020a0381161515610eda57600080fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60005460ff1681565b60015433600160a060020a0390811691161480610f42575060005433600160a060020a0390811661010090920416145b1515610f4d57600080fd5b600160a060020a0381161515610f6257600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000546101009004600160a060020a031681565b600154600160a060020a031681565b600160a060020a031660009081526005602052604090205490565b610fd76110ee565b600160a060020a03821660009081526005602090815260409182902080549092839282810201905190810160405280929190818152602001828054801561106557602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff168152602001906002019060208260010104928301926001038202915080841161102c5790505b5050505050915050919050565b6101206040519081016040526009815b6000815260001990910190602001816110825790505090565b8154818355818115116110cf57600f016010900481600f016010900483600052602060002091820191016110cf9190611100565b505050565b60a060405190810160405260008152600460208201611082565b60206040519081016040526000815290565b61111e91905b8082111561111a5760008155600101611106565b5090565b905600a165627a7a72305820a1124ba7f27f40e8634c2c73650cf4e886c7f448920784961ad5ee9661ffa71a0029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000da9c03dfd4d137f926c3cf6953cb951832eb08b2
-----Decoded View---------------
Arg [0] : _nftAddr (address): 0xDA9c03dFd4D137F926c3cF6953cb951832Eb08b2
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000da9c03dfd4d137f926c3cf6953cb951832eb08b2
Swarm Source
bzzr://a1124ba7f27f40e8634c2c73650cf4e886c7f448920784961ad5ee9661ffa71a
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ 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.