Source Code
Latest 25 from a total of 14,672 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Cancel Auction | 15351786 | 1285 days ago | IN | 0 ETH | 0.00062289 | ||||
| Cancel Auction | 14081307 | 1487 days ago | IN | 0 ETH | 0.00257769 | ||||
| Cancel Auction | 14069393 | 1489 days ago | IN | 0 ETH | 0.00747091 | ||||
| Cancel Auction | 14069387 | 1489 days ago | IN | 0 ETH | 0.00919918 | ||||
| Cancel Auction | 14069385 | 1489 days ago | IN | 0 ETH | 0.01011688 | ||||
| Cancel Auction | 14069385 | 1489 days ago | IN | 0 ETH | 0.01011688 | ||||
| Cancel Auction | 14069383 | 1489 days ago | IN | 0 ETH | 0.00866231 | ||||
| Bid | 14026347 | 1496 days ago | IN | 1 ETH | 0.01252168 | ||||
| Bid | 14012817 | 1498 days ago | IN | 0.4 ETH | 0.00750337 | ||||
| Bid | 14012736 | 1498 days ago | IN | 0.4 ETH | 0.01007499 | ||||
| Bid | 14012379 | 1498 days ago | IN | 0.4 ETH | 0.01083363 | ||||
| Cancel Auction | 14012050 | 1498 days ago | IN | 0 ETH | 0.00283183 | ||||
| Cancel Auction | 14012039 | 1498 days ago | IN | 0 ETH | 0.00297186 | ||||
| Cancel Auction | 14012025 | 1498 days ago | IN | 0 ETH | 0.00316608 | ||||
| Cancel Auction | 14011480 | 1498 days ago | IN | 0 ETH | 0.01253724 | ||||
| Cancel Auction | 14011480 | 1498 days ago | IN | 0 ETH | 0.01595361 | ||||
| Bid | 14009951 | 1498 days ago | IN | 0.369 ETH | 0.00748653 | ||||
| Bid | 14009722 | 1498 days ago | IN | 0.99999 ETH | 0.01075592 | ||||
| Bid | 14009720 | 1498 days ago | IN | 0.99999 ETH | 0.01018856 | ||||
| Bid | 14009710 | 1498 days ago | IN | 0.6 ETH | 0.00900735 | ||||
| Bid | 14009678 | 1498 days ago | IN | 0.5 ETH | 0.0080812 | ||||
| Bid | 14009668 | 1498 days ago | IN | 0.3 ETH | 0.01036252 | ||||
| Bid | 14009654 | 1498 days ago | IN | 0.35 ETH | 0.00850305 | ||||
| Bid | 14009632 | 1498 days ago | IN | 0.75 ETH | 0.00800602 | ||||
| Bid | 14009630 | 1498 days ago | IN | 0.349 ETH | 0.00769513 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| - | 14026347 | 1496 days ago | 0.00001 ETH | ||||
| - | 14026347 | 1496 days ago | 0.9699903 ETH | ||||
| - | 14012817 | 1498 days ago | 0.388 ETH | ||||
| - | 14012736 | 1498 days ago | 0.388 ETH | ||||
| - | 14012379 | 1498 days ago | 0.388 ETH | ||||
| - | 14009951 | 1498 days ago | 0.35793 ETH | ||||
| - | 14009722 | 1498 days ago | 0.9699903 ETH | ||||
| - | 14009720 | 1498 days ago | 0.9699903 ETH | ||||
| - | 14009710 | 1498 days ago | 0.582 ETH | ||||
| - | 14009678 | 1498 days ago | 0.485 ETH | ||||
| - | 14009668 | 1498 days ago | 0.291 ETH | ||||
| - | 14009654 | 1498 days ago | 0.3395 ETH | ||||
| - | 14009632 | 1498 days ago | 0.7275 ETH | ||||
| - | 14009630 | 1498 days ago | 0.33853 ETH | ||||
| - | 14009611 | 1498 days ago | 0.323301 ETH | ||||
| - | 14009608 | 1498 days ago | 0.291 ETH | ||||
| - | 14009603 | 1498 days ago | 0.4074 ETH | ||||
| - | 14009576 | 1498 days ago | 0.388 ETH | ||||
| - | 14009553 | 1498 days ago | 0.291 ETH | ||||
| - | 14009551 | 1498 days ago | 0.291 ETH | ||||
| - | 14009501 | 1498 days ago | 0.485 ETH | ||||
| - | 14009471 | 1498 days ago | 0.388 ETH | ||||
| - | 14009469 | 1498 days ago | 0.388 ETH | ||||
| - | 14008941 | 1498 days ago | 0.29585 ETH | ||||
| - | 14008930 | 1498 days ago | 0.291 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
SaleClockAuction
Compiler Version
v0.4.19+commit.c4cbbb05
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2018-02-05
*/
pragma solidity ^0.4.11;
contract Ownable {
address public owner;
function Ownable() public {
owner = msg.sender;
}
modifier onlyOwner() {
require(msg.sender == owner);
_;
}
function transferOwnership(address newOwner) public onlyOwner {
if (newOwner != address(0)) {
owner = newOwner;
}
}
}
contract ERC721 {
function totalSupply() public view returns (uint256 total);
function balanceOf(address _owner) public view returns (uint256 balance);
function ownerOf(uint256 _tokenId) external view returns (address owner);
function approve(address _to, uint256 _tokenId) external;
function transfer(address _to, uint256 _tokenId) external;
function transferFrom(address _from, address _to, uint256 _tokenId) external;
event Transfer(address from, address to, uint256 tokenId);
event Approval(address owner, address approved, uint256 tokenId);
}
contract GeneScienceInterface {
function isGeneScience() public pure returns (bool);
function mixGenes(uint256 genes1, uint256 genes2, uint256 targetBlock) public returns (uint256);
}
contract BotAccessControl {
event ContractUpgrade(address newContract);
address public ceoAddress;
address public cfoAddress;
address public cooAddress;
bool public paused = false;
modifier onlyCEO() {
require(msg.sender == ceoAddress);
_;
}
modifier onlyCFO() {
require(msg.sender == cfoAddress);
_;
}
modifier onlyCOO() {
require(msg.sender == cooAddress);
_;
}
modifier onlyCLevel() {
require(
msg.sender == cooAddress ||
msg.sender == ceoAddress ||
msg.sender == cfoAddress
);
_;
}
function setCEO(address _newCEO) external onlyCEO {
require(_newCEO != address(0));
ceoAddress = _newCEO;
}
function setCFO(address _newCFO) external onlyCEO {
require(_newCFO != address(0));
cfoAddress = _newCFO;
}
function setCOO(address _newCOO) external onlyCEO {
require(_newCOO != address(0));
cooAddress = _newCOO;
}
modifier whenNotPaused() {
require(!paused);
_;
}
modifier whenPaused {
require(paused);
_;
}
function pause() external onlyCLevel whenNotPaused {
paused = true;
}
function unpause() public onlyCEO whenPaused {
paused = false;
}
}
contract BotBase is BotAccessControl {
event Birth(
address owner,
uint256 botId,
uint256 matronId,
uint256 sireId,
uint256 genes,
uint256 birthTime
);
event Transfer(address from, address to, uint256 tokenId);
struct Bot {
uint256 genes;
uint64 birthTime;
uint64 cooldownEndBlock;
uint32 matronId;
uint32 sireId;
uint32 siringWithId;
uint16 cooldownIndex;
uint16 generation;
}
uint32[14] public cooldowns = [
uint32(1 minutes),
uint32(2 minutes),
uint32(5 minutes),
uint32(10 minutes),
uint32(30 minutes),
uint32(1 hours),
uint32(2 hours),
uint32(4 hours),
uint32(8 hours),
uint32(16 hours),
uint32(1 days),
uint32(2 days),
uint32(4 days),
uint32(7 days)
];
uint256 public secondsPerBlock = 15;
Bot[] bots;
mapping (uint256 => address) public botIndexToOwner;
mapping (address => uint256) ownershipTokenCount;
mapping (uint256 => address) public botIndexToApproved;
mapping (uint256 => address) public sireAllowedToAddress;
uint32 public destroyedBots;
SaleClockAuction public saleAuction;
SiringClockAuction public siringAuction;
function _transfer(address _from, address _to, uint256 _tokenId) internal {
if (_to == address(0)) {
delete botIndexToOwner[_tokenId];
} else {
ownershipTokenCount[_to]++;
botIndexToOwner[_tokenId] = _to;
}
if (_from != address(0)) {
ownershipTokenCount[_from]--;
delete sireAllowedToAddress[_tokenId];
delete botIndexToApproved[_tokenId];
}
Transfer(_from, _to, _tokenId);
}
function _createBot(
uint256 _matronId,
uint256 _sireId,
uint256 _generation,
uint256 _genes,
address _owner
)
internal
returns (uint)
{
require(_matronId == uint256(uint32(_matronId)));
require(_sireId == uint256(uint32(_sireId)));
require(_generation == uint256(uint16(_generation)));
uint16 cooldownIndex = uint16(_generation / 2);
if (cooldownIndex > 13) {
cooldownIndex = 13;
}
Bot memory _bot = Bot({
genes: _genes,
birthTime: uint64(now),
cooldownEndBlock: 0,
matronId: uint32(_matronId),
sireId: uint32(_sireId),
siringWithId: 0,
cooldownIndex: cooldownIndex,
generation: uint16(_generation)
});
uint256 newBotId = bots.push(_bot) - 1;
require(newBotId == uint256(uint32(newBotId)));
Birth(
_owner,
newBotId,
uint256(_bot.matronId),
uint256(_bot.sireId),
_bot.genes,
uint256(_bot.birthTime)
);
_transfer(0, _owner, newBotId);
return newBotId;
}
function _destroyBot(uint256 _botId) internal {
require(_botId > 0);
address from = botIndexToOwner[_botId];
require(from != address(0));
destroyedBots++;
_transfer(from, 0, _botId);
}
function setSecondsPerBlock(uint256 secs) external onlyCLevel {
require(secs < cooldowns[0]);
secondsPerBlock = secs;
}
}
contract BotExtension is BotBase {
event Lock(uint256 botId, uint16 mask);
mapping (address => bool) extensions;
mapping (uint256 => uint16) locks;
uint16 constant LOCK_BREEDING = 1;
uint16 constant LOCK_TRANSFER = 2;
uint16 constant LOCK_ALL = LOCK_BREEDING | LOCK_TRANSFER;
function addExtension(address _contract) external onlyCEO {
extensions[_contract] = true;
}
function removeExtension(address _contract) external onlyCEO {
delete extensions[_contract];
}
modifier onlyExtension() {
require(extensions[msg.sender] == true);
_;
}
function extCreateBot(
uint256 _matronId,
uint256 _sireId,
uint256 _generation,
uint256 _genes,
address _owner
)
public
onlyExtension
returns (uint)
{
return _createBot(_matronId, _sireId, _generation, _genes, _owner);
}
function extDestroyBot(uint256 _botId)
public
onlyExtension
{
require(locks[_botId] == 0);
_destroyBot(_botId);
}
function extLockBot(uint256 _botId, uint16 _mask)
public
onlyExtension
{
_lockBot(_botId, _mask);
}
function _lockBot(uint256 _botId, uint16 _mask)
internal
{
require(_mask > 0);
uint16 mask = locks[_botId];
require(mask & _mask == 0);
if (_mask & LOCK_BREEDING > 0) {
Bot storage bot = bots[_botId];
require(bot.siringWithId == 0);
}
if (_mask & LOCK_TRANSFER > 0) {
address owner = botIndexToOwner[_botId];
require(owner != address(saleAuction));
require(owner != address(siringAuction));
}
mask |= _mask;
locks[_botId] = mask;
Lock(_botId, mask);
}
function extUnlockBot(uint256 _botId, uint16 _mask)
public
onlyExtension
returns (uint16)
{
_unlockBot(_botId, _mask);
}
function _unlockBot(uint256 _botId, uint16 _mask)
internal
{
require(_mask > 0);
uint16 mask = locks[_botId];
require(mask & _mask == _mask);
mask ^= _mask;
locks[_botId] = mask;
Lock(_botId, mask);
}
function extGetLock(uint256 _botId)
public
view
onlyExtension
returns (uint16)
{
return locks[_botId];
}
}
contract BotOwnership is BotExtension, ERC721 {
string public constant name = "CryptoBots";
string public constant symbol = "CBT";
function _owns(address _claimant, uint256 _tokenId) internal view returns (bool) {
return botIndexToOwner[_tokenId] == _claimant;
}
function _approvedFor(address _claimant, uint256 _tokenId) internal view returns (bool) {
return botIndexToApproved[_tokenId] == _claimant;
}
function _approve(uint256 _tokenId, address _approved) internal {
botIndexToApproved[_tokenId] = _approved;
}
function balanceOf(address _owner) public view returns (uint256 count) {
return ownershipTokenCount[_owner];
}
function transfer(
address _to,
uint256 _tokenId
)
external
whenNotPaused
{
require(_to != address(0));
require(_to != address(this));
require(_to != address(saleAuction));
require(_to != address(siringAuction));
require(_owns(msg.sender, _tokenId));
require(locks[_tokenId] & LOCK_TRANSFER == 0);
_transfer(msg.sender, _to, _tokenId);
}
function approve(
address _to,
uint256 _tokenId
)
external
whenNotPaused
{
require(_owns(msg.sender, _tokenId));
require(locks[_tokenId] & LOCK_TRANSFER == 0);
_approve(_tokenId, _to);
Approval(msg.sender, _to, _tokenId);
}
function transferFrom(
address _from,
address _to,
uint256 _tokenId
)
external
whenNotPaused
{
require(_to != address(0));
require(_to != address(this));
require(_approvedFor(msg.sender, _tokenId));
require(_owns(_from, _tokenId));
require(locks[_tokenId] & LOCK_TRANSFER == 0);
_transfer(_from, _to, _tokenId);
}
function totalSupply() public view returns (uint) {
return bots.length - destroyedBots;
}
function ownerOf(uint256 _tokenId)
external
view
returns (address owner)
{
owner = botIndexToOwner[_tokenId];
require(owner != address(0));
}
function tokensOfOwner(address _owner) external view returns(uint256[] ownerTokens) {
uint256 tokenCount = balanceOf(_owner);
if (tokenCount == 0) {
return new uint256[](0);
} else {
uint256[] memory result = new uint256[](tokenCount);
uint256 totalBots = bots.length - 1;
uint256 resultIndex = 0;
uint256 botId;
for (botId = 0; botId <= totalBots; botId++) {
if (botIndexToOwner[botId] == _owner) {
result[resultIndex] = botId;
resultIndex++;
}
}
return result;
}
}
}
contract BotBreeding is BotOwnership {
event Pregnant(address owner, uint256 matronId, uint256 sireId, uint256 cooldownEndBlock);
uint256 public autoBirthFee = 2 finney;
uint256 public pregnantBots;
GeneScienceInterface public geneScience;
function setGeneScienceAddress(address _address) external onlyCEO {
GeneScienceInterface candidateContract = GeneScienceInterface(_address);
require(candidateContract.isGeneScience());
geneScience = candidateContract;
}
function _isReadyToBreed(uint256 _botId, Bot _bot) internal view returns (bool) {
return
(_bot.siringWithId == 0) &&
(_bot.cooldownEndBlock <= uint64(block.number)) &&
(locks[_botId] & LOCK_BREEDING == 0);
}
function _isSiringPermitted(uint256 _sireId, uint256 _matronId) internal view returns (bool) {
address matronOwner = botIndexToOwner[_matronId];
address sireOwner = botIndexToOwner[_sireId];
return (matronOwner == sireOwner || sireAllowedToAddress[_sireId] == matronOwner);
}
function _triggerCooldown(Bot storage _bot) internal {
_bot.cooldownEndBlock = uint64((cooldowns[_bot.cooldownIndex]/secondsPerBlock) + block.number);
if (_bot.cooldownIndex < 13) {
_bot.cooldownIndex += 1;
}
}
function approveSiring(address _addr, uint256 _sireId)
external
whenNotPaused
{
require(_owns(msg.sender, _sireId));
sireAllowedToAddress[_sireId] = _addr;
}
function setAutoBirthFee(uint256 val) external onlyCOO {
autoBirthFee = val;
}
function _isReadyToGiveBirth(Bot _matron) private view returns (bool) {
return (_matron.siringWithId != 0) && (_matron.cooldownEndBlock <= uint64(block.number));
}
function isReadyToBreed(uint256 _botId)
public
view
returns (bool)
{
Bot storage bot = bots[_botId];
return _botId > 0 && _isReadyToBreed(_botId, bot);
}
function isPregnant(uint256 _botId)
public
view
returns (bool)
{
return _botId > 0 && bots[_botId].siringWithId != 0;
}
function _isValidMatingPair(
Bot storage _matron,
uint256 _matronId,
Bot storage _sire,
uint256 _sireId
)
private
view
returns(bool)
{
if (_matronId == _sireId) {
return false;
}
if (_matron.matronId == _sireId || _matron.sireId == _sireId) {
return false;
}
if (_sire.matronId == _matronId || _sire.sireId == _matronId) {
return false;
}
if (_sire.matronId == 0 || _matron.matronId == 0) {
return true;
}
if (_sire.matronId == _matron.matronId || _sire.matronId == _matron.sireId) {
return false;
}
if (_sire.sireId == _matron.matronId || _sire.sireId == _matron.sireId) {
return false;
}
return true;
}
function _canBreedWithViaAuction(uint256 _matronId, uint256 _sireId)
internal
view
returns (bool)
{
Bot storage matron = bots[_matronId];
Bot storage sire = bots[_sireId];
return _isValidMatingPair(matron, _matronId, sire, _sireId);
}
function canBreedWith(uint256 _matronId, uint256 _sireId)
external
view
returns(bool)
{
require(_matronId > 0);
require(_sireId > 0);
Bot storage matron = bots[_matronId];
Bot storage sire = bots[_sireId];
return _isValidMatingPair(matron, _matronId, sire, _sireId) &&
_isSiringPermitted(_sireId, _matronId);
}
function _breedWith(uint256 _matronId, uint256 _sireId) internal {
Bot storage sire = bots[_sireId];
Bot storage matron = bots[_matronId];
matron.siringWithId = uint32(_sireId);
_triggerCooldown(sire);
_triggerCooldown(matron);
delete sireAllowedToAddress[_matronId];
delete sireAllowedToAddress[_sireId];
pregnantBots++;
Pregnant(botIndexToOwner[_matronId], _matronId, _sireId, matron.cooldownEndBlock);
}
function breedWithAuto(uint256 _matronId, uint256 _sireId)
external
payable
whenNotPaused
{
require(msg.value >= autoBirthFee);
require(_owns(msg.sender, _matronId));
require(_isSiringPermitted(_sireId, _matronId));
Bot storage matron = bots[_matronId];
require(_isReadyToBreed(_matronId, matron));
Bot storage sire = bots[_sireId];
require(_isReadyToBreed(_sireId, sire));
require(_isValidMatingPair(
matron,
_matronId,
sire,
_sireId
));
_breedWith(_matronId, _sireId);
}
function giveBirth(uint256 _matronId)
external
whenNotPaused
returns(uint256)
{
Bot storage matron = bots[_matronId];
require(matron.birthTime != 0);
require(_isReadyToGiveBirth(matron));
uint256 sireId = matron.siringWithId;
Bot storage sire = bots[sireId];
uint16 parentGen = matron.generation;
if (sire.generation > matron.generation) {
parentGen = sire.generation;
}
uint256 childGenes = geneScience.mixGenes(matron.genes, sire.genes, matron.cooldownEndBlock - 1);
address owner = botIndexToOwner[_matronId];
uint256 botId = _createBot(_matronId, matron.siringWithId, parentGen + 1, childGenes, owner);
delete matron.siringWithId;
pregnantBots--;
msg.sender.send(autoBirthFee);
return botId;
}
}
contract ClockAuctionBase {
struct Auction {
address seller;
uint128 startingPrice;
uint128 endingPrice;
uint64 duration;
uint64 startedAt;
}
ERC721 public nonFungibleContract;
uint256 public ownerCut;
mapping (uint256 => Auction) tokenIdToAuction;
event AuctionCreated(
address seller,
uint256 tokenId,
uint256 startingPrice,
uint256 endingPrice,
uint256 creationTime,
uint256 duration
);
event AuctionSuccessful(uint256 tokenId, uint256 totalPrice, address seller, address winner, uint256 time);
event AuctionCancelled(uint256 tokenId, address seller, uint256 time);
function _owns(address _claimant, uint256 _tokenId) internal view returns (bool) {
return (nonFungibleContract.ownerOf(_tokenId) == _claimant);
}
function _escrow(address _owner, uint256 _tokenId) internal {
nonFungibleContract.transferFrom(_owner, this, _tokenId);
}
function _transfer(address _receiver, uint256 _tokenId) internal {
nonFungibleContract.transfer(_receiver, _tokenId);
}
function _addAuction(uint256 _tokenId, Auction _auction) internal {
require(_auction.duration >= 1 minutes);
tokenIdToAuction[_tokenId] = _auction;
AuctionCreated(
_auction.seller,
uint256(_tokenId),
uint256(_auction.startingPrice),
uint256(_auction.endingPrice),
uint256(_auction.startedAt),
uint256(_auction.duration)
);
}
function _cancelAuction(uint256 _tokenId, address _seller) internal {
_removeAuction(_tokenId);
_transfer(_seller, _tokenId);
AuctionCancelled(_tokenId, _seller, uint256(now));
}
function _bid(uint256 _tokenId, uint256 _bidAmount)
internal
returns (uint256)
{
Auction storage auction = tokenIdToAuction[_tokenId];
require(_isOnAuction(auction));
uint256 price = _currentPrice(auction);
require(_bidAmount >= price);
address seller = auction.seller;
_removeAuction(_tokenId);
if (price > 0) {
uint256 auctioneerCut = _computeCut(price);
uint256 sellerProceeds = price - auctioneerCut;
seller.transfer(sellerProceeds);
}
uint256 bidExcess = _bidAmount - price;
msg.sender.transfer(bidExcess);
AuctionSuccessful(_tokenId, price, seller, msg.sender, uint256(now));
return price;
}
function _removeAuction(uint256 _tokenId) internal {
delete tokenIdToAuction[_tokenId];
}
function _isOnAuction(Auction storage _auction) internal view returns (bool) {
return (_auction.startedAt > 0);
}
function _currentPrice(Auction storage _auction)
internal
view
returns (uint256)
{
uint256 secondsPassed = 0;
if (now > _auction.startedAt) {
secondsPassed = now - _auction.startedAt;
}
return _computeCurrentPrice(
_auction.startingPrice,
_auction.endingPrice,
_auction.duration,
secondsPassed
);
}
function _computeCurrentPrice(
uint256 _startingPrice,
uint256 _endingPrice,
uint256 _duration,
uint256 _secondsPassed
)
internal
pure
returns (uint256)
{
if (_secondsPassed >= _duration) {
return _endingPrice;
} else {
int256 totalPriceChange = int256(_endingPrice) - int256(_startingPrice);
int256 currentPriceChange = totalPriceChange * int256(_secondsPassed) / int256(_duration);
int256 currentPrice = int256(_startingPrice) + currentPriceChange;
return uint256(currentPrice);
}
}
function _computeCut(uint256 _price) internal view returns (uint256) {
return _price * ownerCut / 10000;
}
}
contract Pausable is Ownable {
event Pause();
event Unpause();
bool public paused = false;
modifier whenNotPaused() {
require(!paused);
_;
}
modifier whenPaused {
require(paused);
_;
}
function pause() public onlyOwner whenNotPaused returns (bool) {
paused = true;
Pause();
return true;
}
function unpause() public onlyOwner whenPaused returns (bool) {
paused = false;
Unpause();
return true;
}
}
contract ClockAuction is Pausable, ClockAuctionBase {
function ClockAuction(address _nftAddress, uint256 _cut) public {
require(_cut <= 10000);
ownerCut = _cut;
ERC721 candidateContract = ERC721(_nftAddress);
nonFungibleContract = candidateContract;
}
function withdrawBalance() external {
address nftAddress = address(nonFungibleContract);
require(
msg.sender == owner ||
msg.sender == nftAddress
);
bool res = nftAddress.send(this.balance);
}
function createAuction(
uint256 _tokenId,
uint256 _startingPrice,
uint256 _endingPrice,
uint256 _duration,
address _seller
)
external
whenNotPaused
{
require(_startingPrice == uint256(uint128(_startingPrice)));
require(_endingPrice == uint256(uint128(_endingPrice)));
require(_duration == uint256(uint64(_duration)));
require(_owns(msg.sender, _tokenId));
_escrow(msg.sender, _tokenId);
Auction memory auction = Auction(
_seller,
uint128(_startingPrice),
uint128(_endingPrice),
uint64(_duration),
uint64(now)
);
_addAuction(_tokenId, auction);
}
function bid(uint256 _tokenId)
external
payable
whenNotPaused
{
_bid(_tokenId, msg.value);
_transfer(msg.sender, _tokenId);
}
function cancelAuction(uint256 _tokenId)
external
{
Auction storage auction = tokenIdToAuction[_tokenId];
require(_isOnAuction(auction));
address seller = auction.seller;
require(msg.sender == seller);
_cancelAuction(_tokenId, seller);
}
function cancelAuctionWhenPaused(uint256 _tokenId)
external
whenPaused
onlyOwner
{
Auction storage auction = tokenIdToAuction[_tokenId];
require(_isOnAuction(auction));
_cancelAuction(_tokenId, auction.seller);
}
function getAuction(uint256 _tokenId)
external
view
returns
(
address seller,
uint256 startingPrice,
uint256 endingPrice,
uint256 duration,
uint256 startedAt
)
{
Auction storage auction = tokenIdToAuction[_tokenId];
require(_isOnAuction(auction));
return (
auction.seller,
auction.startingPrice,
auction.endingPrice,
auction.duration,
auction.startedAt
);
}
function getCurrentPrice(uint256 _tokenId)
external
view
returns (uint256)
{
Auction storage auction = tokenIdToAuction[_tokenId];
require(_isOnAuction(auction));
return _currentPrice(auction);
}
}
contract SiringClockAuction is ClockAuction {
bool public isSiringClockAuction = true;
function SiringClockAuction(address _nftAddr, uint256 _cut) public
ClockAuction(_nftAddr, _cut) {}
function createAuction(
uint256 _tokenId,
uint256 _startingPrice,
uint256 _endingPrice,
uint256 _duration,
address _seller
)
external
{
require(_startingPrice == uint256(uint128(_startingPrice)));
require(_endingPrice == uint256(uint128(_endingPrice)));
require(_duration == uint256(uint64(_duration)));
require(msg.sender == address(nonFungibleContract));
_escrow(_seller, _tokenId);
Auction memory auction = Auction(
_seller,
uint128(_startingPrice),
uint128(_endingPrice),
uint64(_duration),
uint64(now)
);
_addAuction(_tokenId, auction);
}
function bid(uint256 _tokenId)
external
payable
{
require(msg.sender == address(nonFungibleContract));
address seller = tokenIdToAuction[_tokenId].seller;
_bid(_tokenId, msg.value);
_transfer(seller, _tokenId);
}
}
contract SaleClockAuction is ClockAuction {
bool public isSaleClockAuction = true;
uint256 public gen0SaleCount;
uint256[5] public lastGen0SalePrices;
function SaleClockAuction(address _nftAddr, uint256 _cut) public
ClockAuction(_nftAddr, _cut) {}
function createAuction(
uint256 _tokenId,
uint256 _startingPrice,
uint256 _endingPrice,
uint256 _duration,
address _seller
)
external
{
require(_startingPrice == uint256(uint128(_startingPrice)));
require(_endingPrice == uint256(uint128(_endingPrice)));
require(_duration == uint256(uint64(_duration)));
require(msg.sender == address(nonFungibleContract));
_escrow(_seller, _tokenId);
Auction memory auction = Auction(
_seller,
uint128(_startingPrice),
uint128(_endingPrice),
uint64(_duration),
uint64(now)
);
_addAuction(_tokenId, auction);
}
function bid(uint256 _tokenId)
external
payable
{
address seller = tokenIdToAuction[_tokenId].seller;
uint256 price = _bid(_tokenId, msg.value);
_transfer(msg.sender, _tokenId);
if (seller == address(nonFungibleContract)) {
lastGen0SalePrices[gen0SaleCount % 5] = price;
gen0SaleCount++;
}
}
function averageGen0SalePrice() external view returns (uint256) {
uint256 sum = 0;
for (uint256 i = 0; i < 5; i++) {
sum += lastGen0SalePrices[i];
}
return sum / 5;
}
}
contract BotAuction is BotBreeding {
function setSaleAuctionAddress(address _address) external onlyCEO {
SaleClockAuction candidateContract = SaleClockAuction(_address);
require(candidateContract.isSaleClockAuction());
saleAuction = candidateContract;
}
function setSiringAuctionAddress(address _address) external onlyCEO {
SiringClockAuction candidateContract = SiringClockAuction(_address);
require(candidateContract.isSiringClockAuction());
siringAuction = candidateContract;
}
function createSaleAuction(
uint256 _botId,
uint256 _startingPrice,
uint256 _endingPrice,
uint256 _duration
)
external
whenNotPaused
{
require(_owns(msg.sender, _botId));
require(!isPregnant(_botId));
_approve(_botId, saleAuction);
saleAuction.createAuction(
_botId,
_startingPrice,
_endingPrice,
_duration,
msg.sender
);
}
function createSiringAuction(
uint256 _botId,
uint256 _startingPrice,
uint256 _endingPrice,
uint256 _duration
)
external
whenNotPaused
{
require(_owns(msg.sender, _botId));
require(isReadyToBreed(_botId));
_approve(_botId, siringAuction);
siringAuction.createAuction(
_botId,
_startingPrice,
_endingPrice,
_duration,
msg.sender
);
}
function bidOnSiringAuction(
uint256 _sireId,
uint256 _matronId
)
external
payable
whenNotPaused
{
require(_owns(msg.sender, _matronId));
require(isReadyToBreed(_matronId));
require(_canBreedWithViaAuction(_matronId, _sireId));
uint256 currentPrice = siringAuction.getCurrentPrice(_sireId);
require(msg.value >= currentPrice + autoBirthFee);
siringAuction.bid.value(msg.value - autoBirthFee)(_sireId);
_breedWith(uint32(_matronId), uint32(_sireId));
}
function withdrawAuctionBalances() external onlyCLevel {
saleAuction.withdrawBalance();
siringAuction.withdrawBalance();
}
}
contract BotMinting is BotAuction {
uint256 public constant PROMO_CREATION_LIMIT = 5000;
uint256 public constant GEN0_CREATION_LIMIT = 45000;
uint256 public constant GEN0_STARTING_PRICE = 10 finney;
uint256 public constant GEN0_AUCTION_DURATION = 1 days;
uint256 public promoCreatedCount;
uint256 public gen0CreatedCount;
function createPromoBot(uint256 _genes, address _owner) external onlyCOO {
address botOwner = _owner;
if (botOwner == address(0)) {
botOwner = cooAddress;
}
require(promoCreatedCount < PROMO_CREATION_LIMIT);
promoCreatedCount++;
_createBot(0, 0, 0, _genes, botOwner);
}
function createGen0Auction(uint256 _genes) external onlyCOO {
require(gen0CreatedCount < GEN0_CREATION_LIMIT);
uint256 botId = _createBot(0, 0, 0, _genes, address(this));
_approve(botId, saleAuction);
saleAuction.createAuction(
botId,
_computeNextGen0Price(),
0,
GEN0_AUCTION_DURATION,
address(this)
);
gen0CreatedCount++;
}
function _computeNextGen0Price() internal view returns (uint256) {
uint256 avePrice = saleAuction.averageGen0SalePrice();
require(avePrice == uint256(uint128(avePrice)));
uint256 nextPrice = avePrice + (avePrice / 2);
if (nextPrice < GEN0_STARTING_PRICE) {
nextPrice = GEN0_STARTING_PRICE;
}
return nextPrice;
}
}
contract BotCore is BotMinting {
address public newContractAddress;
function BotCore() public {
paused = true;
ceoAddress = msg.sender;
cooAddress = msg.sender;
_createBot(0, 0, 0, uint256(-1), msg.sender);
}
function setNewAddress(address _v2Address) external onlyCEO whenPaused {
newContractAddress = _v2Address;
ContractUpgrade(_v2Address);
}
function() external payable {
require(
msg.sender == address(saleAuction) ||
msg.sender == address(siringAuction)
);
}
function getBot(uint256 _id)
external
view
returns (
bool isGestating,
bool isReady,
uint256 cooldownIndex,
uint256 nextActionAt,
uint256 siringWithId,
uint256 birthTime,
uint256 matronId,
uint256 sireId,
uint256 generation,
uint256 genes
)
{
require(botIndexToOwner[_id] != address(0));
Bot storage bot = bots[_id];
isGestating = (bot.siringWithId != 0);
isReady = (bot.cooldownEndBlock <= block.number);
cooldownIndex = uint256(bot.cooldownIndex);
nextActionAt = uint256(bot.cooldownEndBlock);
siringWithId = uint256(bot.siringWithId);
birthTime = uint256(bot.birthTime);
matronId = uint256(bot.matronId);
sireId = uint256(bot.sireId);
generation = uint256(bot.generation);
genes = bot.genes;
}
function unpause() public onlyCEO whenPaused {
require(saleAuction != address(0));
require(siringAuction != address(0));
require(geneScience != address(0));
require(newContractAddress == address(0));
super.unpause();
}
function withdrawBalance() external onlyCFO {
uint256 balance = this.balance;
uint256 subtractFees = (pregnantBots + 1) * autoBirthFee;
if (balance > subtractFees) {
cfoAddress.send(balance - subtractFees);
}
}
function destroyBot(uint256 _botId) external onlyCEO {
require(locks[_botId] == 0);
_destroyBot(_botId);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"_startingPrice","type":"uint256"},{"name":"_endingPrice","type":"uint256"},{"name":"_duration","type":"uint256"},{"name":"_seller","type":"address"}],"name":"createAuction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"bid","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"lastGen0SalePrices","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawBalance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getAuction","outputs":[{"name":"seller","type":"address"},{"name":"startingPrice","type":"uint256"},{"name":"endingPrice","type":"uint256"},{"name":"duration","type":"uint256"},{"name":"startedAt","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ownerCut","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isSaleClockAuction","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"cancelAuctionWhenPaused","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"gen0SaleCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"cancelAuction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getCurrentPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"nonFungibleContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"averageGen0SalePrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_nftAddr","type":"address"},{"name":"_cut","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"seller","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"startingPrice","type":"uint256"},{"indexed":false,"name":"endingPrice","type":"uint256"},{"indexed":false,"name":"creationTime","type":"uint256"},{"indexed":false,"name":"duration","type":"uint256"}],"name":"AuctionCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"totalPrice","type":"uint256"},{"indexed":false,"name":"seller","type":"address"},{"indexed":false,"name":"winner","type":"address"},{"indexed":false,"name":"time","type":"uint256"}],"name":"AuctionSuccessful","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"seller","type":"address"},{"indexed":false,"name":"time","type":"uint256"}],"name":"AuctionCancelled","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"}]Contract Creation Code
606060405260008060146101000a81548160ff0219169083151502179055506001600460006101000a81548160ff021916908315150217905550341561004457600080fd5b6040516040806118a28339810160405280805190602001909190805190602001909190505081816000336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061271082111515156100be57600080fd5b8160028190555082905080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050506117858061011d6000396000f3006060604052600436106100fc576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806327ebe40a146101015780633f4ba83a1461015e578063454a2ab31461018b578063484eccb4146101a35780635c975abb146101da5780635fd8c7101461020757806378bd79351461021c57806383b5ff8b1461029b5780638456cb59146102c457806385b86188146102f1578063878eb3681461031e5780638a98a9cc146103415780638da5cb5b1461036a57806396b5a755146103bf578063c55d0f56146103e2578063dd1b7a0f14610419578063eac9d94c1461046e578063f2fde38b14610497575b600080fd5b341561010c57600080fd5b61015c600480803590602001909190803590602001909190803590602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506104d0565b005b341561016957600080fd5b610171610620565b604051808215151515815260200191505060405180910390f35b6101a160048080359060200190919050506106e5565b005b34156101ae57600080fd5b6101c460048080359060200190919050506107c7565b6040518082815260200191505060405180910390f35b34156101e557600080fd5b6101ed6107e1565b604051808215151515815260200191505060405180910390f35b341561021257600080fd5b61021a6107f4565b005b341561022757600080fd5b61023d60048080359060200190919050506108ff565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390f35b34156102a657600080fd5b6102ae610a22565b6040518082815260200191505060405180910390f35b34156102cf57600080fd5b6102d7610a28565b604051808215151515815260200191505060405180910390f35b34156102fc57600080fd5b610304610aef565b604051808215151515815260200191505060405180910390f35b341561032957600080fd5b61033f6004808035906020019091905050610b02565b005b341561034c57600080fd5b610354610bd4565b6040518082815260200191505060405180910390f35b341561037557600080fd5b61037d610bda565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103ca57600080fd5b6103e06004808035906020019091905050610bff565b005b34156103ed57600080fd5b6104036004808035906020019091905050610c9b565b6040518082815260200191505060405180910390f35b341561042457600080fd5b61042c610cd8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561047957600080fd5b610481610cfe565b6040518082815260200191505060405180910390f35b34156104a257600080fd5b6104ce600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d4a565b005b6104d86116db565b846fffffffffffffffffffffffffffffffff16851415156104f857600080fd5b836fffffffffffffffffffffffffffffffff168414151561051857600080fd5b8267ffffffffffffffff168314151561053057600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561058c57600080fd5b6105968287610e1f565b60a0604051908101604052808373ffffffffffffffffffffffffffffffffffffffff168152602001866fffffffffffffffffffffffffffffffff168152602001856fffffffffffffffffffffffffffffffff1681526020018467ffffffffffffffff1681526020014267ffffffffffffffff1681525090506106188682610f2f565b505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561067d57600080fd5b600060149054906101000a900460ff16151561069857600080fd5b60008060146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a16001905090565b6000806003600084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915061072b8334611162565b9050610737338461133d565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156107c2578060066005805481151561079d57fe5b066005811015156107aa57fe5b01819055506005600081548092919060010191905055505b505050565b6006816005811015156107d657fe5b016000915090505481565b600060149054906101000a900460ff1681565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806108a257508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156108ad57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505090505050565b60008060008060008060036000888152602001908152602001600020905061092681611419565b151561093157600080fd5b8060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160010160009054906101000a90046fffffffffffffffffffffffffffffffff168260010160109054906101000a90046fffffffffffffffffffffffffffffffff168360020160009054906101000a900467ffffffffffffffff168460020160089054906101000a900467ffffffffffffffff16836fffffffffffffffffffffffffffffffff169350826fffffffffffffffffffffffffffffffff1692508167ffffffffffffffff1691508067ffffffffffffffff169050955095509550955095505091939590929450565b60025481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a8557600080fd5b600060149054906101000a900460ff16151515610aa157600080fd5b6001600060146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a16001905090565b600460009054906101000a900460ff1681565b60008060149054906101000a900460ff161515610b1e57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b7957600080fd5b600360008381526020019081526020016000209050610b9781611419565b1515610ba257600080fd5b610bd0828260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611447565b5050565b60055481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600360008481526020019081526020016000209150610c2082611419565b1515610c2b57600080fd5b8160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c8c57600080fd5b610c968382611447565b505050565b600080600360008481526020019081526020016000209050610cbc81611419565b1515610cc757600080fd5b610cd0816114d1565b915050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000809150600090505b6005811015610d3657600681600581101515610d2357fe5b0154820191508080600101915050610d0b565b600582811515610d4257fe5b049250505090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610da557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610e1c57806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd8330846040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1515610f1757600080fd5b6102c65a03f11515610f2857600080fd5b5050505050565b603c816060015167ffffffffffffffff1610151515610f4d57600080fd5b806003600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060408201518160010160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060608201518160020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060808201518160020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050507fabdd2430f9e10eb5db384c1218c42f980dd5fcda760a680a0d95ec506f0963cb81600001518383602001516fffffffffffffffffffffffffffffffff1684604001516fffffffffffffffffffffffffffffffff16856080015167ffffffffffffffff16866060015167ffffffffffffffff16604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390a15050565b6000806000806000806000600360008a8152602001908152602001600020955061118b86611419565b151561119657600080fd5b61119f866114d1565b94508488101515156111b057600080fd5b8560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1693506111e0896115c4565b600085111561123a576111f285611680565b925082850391508373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050151561123957600080fd5b5b84880390503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561127f57600080fd5b7fc2a394cb356728b3540b84dee72ea6de41f44fd94de223565258efe1549ee06f8986863342604051808681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019550505050505060405180910390a184965050505050505092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b151561140157600080fd5b6102c65a03f1151561141257600080fd5b5050505050565b6000808260020160089054906101000a900467ffffffffffffffff1667ffffffffffffffff16119050919050565b611450826115c4565b61145a818361133d565b7f6a3d5a07d548e27ae884a742682e9b929c0a0e4040990bc28c04637c5c077104828242604051808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a15050565b600080600090508260020160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1642111561152a578260020160089054906101000a900467ffffffffffffffff1667ffffffffffffffff16420390505b6115bc8360010160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168460010160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168560020160009054906101000a900467ffffffffffffffff1667ffffffffffffffff168461169b565b915050919050565b60036000828152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006101000a8154906fffffffffffffffffffffffffffffffff02191690556001820160106101000a8154906fffffffffffffffffffffffffffffffff02191690556002820160006101000a81549067ffffffffffffffff02191690556002820160086101000a81549067ffffffffffffffff0219169055505050565b6000612710600254830281151561169357fe5b049050919050565b60008060008085851015156116b2578693506116d0565b8787039250858584028115156116c457fe5b05915081880190508093505b505050949350505050565b60a060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160006fffffffffffffffffffffffffffffffff16815260200160006fffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250905600a165627a7a72305820ce73472da5c157de9546269548efbca452f27ff4336c791069913da59e2a74900029000000000000000000000000f7a6e15dfd5cdd9ef12711bd757a9b6021abf643000000000000000000000000000000000000000000000000000000000000012c
Deployed Bytecode
0x6060604052600436106100fc576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806327ebe40a146101015780633f4ba83a1461015e578063454a2ab31461018b578063484eccb4146101a35780635c975abb146101da5780635fd8c7101461020757806378bd79351461021c57806383b5ff8b1461029b5780638456cb59146102c457806385b86188146102f1578063878eb3681461031e5780638a98a9cc146103415780638da5cb5b1461036a57806396b5a755146103bf578063c55d0f56146103e2578063dd1b7a0f14610419578063eac9d94c1461046e578063f2fde38b14610497575b600080fd5b341561010c57600080fd5b61015c600480803590602001909190803590602001909190803590602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506104d0565b005b341561016957600080fd5b610171610620565b604051808215151515815260200191505060405180910390f35b6101a160048080359060200190919050506106e5565b005b34156101ae57600080fd5b6101c460048080359060200190919050506107c7565b6040518082815260200191505060405180910390f35b34156101e557600080fd5b6101ed6107e1565b604051808215151515815260200191505060405180910390f35b341561021257600080fd5b61021a6107f4565b005b341561022757600080fd5b61023d60048080359060200190919050506108ff565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390f35b34156102a657600080fd5b6102ae610a22565b6040518082815260200191505060405180910390f35b34156102cf57600080fd5b6102d7610a28565b604051808215151515815260200191505060405180910390f35b34156102fc57600080fd5b610304610aef565b604051808215151515815260200191505060405180910390f35b341561032957600080fd5b61033f6004808035906020019091905050610b02565b005b341561034c57600080fd5b610354610bd4565b6040518082815260200191505060405180910390f35b341561037557600080fd5b61037d610bda565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103ca57600080fd5b6103e06004808035906020019091905050610bff565b005b34156103ed57600080fd5b6104036004808035906020019091905050610c9b565b6040518082815260200191505060405180910390f35b341561042457600080fd5b61042c610cd8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561047957600080fd5b610481610cfe565b6040518082815260200191505060405180910390f35b34156104a257600080fd5b6104ce600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d4a565b005b6104d86116db565b846fffffffffffffffffffffffffffffffff16851415156104f857600080fd5b836fffffffffffffffffffffffffffffffff168414151561051857600080fd5b8267ffffffffffffffff168314151561053057600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561058c57600080fd5b6105968287610e1f565b60a0604051908101604052808373ffffffffffffffffffffffffffffffffffffffff168152602001866fffffffffffffffffffffffffffffffff168152602001856fffffffffffffffffffffffffffffffff1681526020018467ffffffffffffffff1681526020014267ffffffffffffffff1681525090506106188682610f2f565b505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561067d57600080fd5b600060149054906101000a900460ff16151561069857600080fd5b60008060146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a16001905090565b6000806003600084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915061072b8334611162565b9050610737338461133d565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156107c2578060066005805481151561079d57fe5b066005811015156107aa57fe5b01819055506005600081548092919060010191905055505b505050565b6006816005811015156107d657fe5b016000915090505481565b600060149054906101000a900460ff1681565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806108a257508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156108ad57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505090505050565b60008060008060008060036000888152602001908152602001600020905061092681611419565b151561093157600080fd5b8060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160010160009054906101000a90046fffffffffffffffffffffffffffffffff168260010160109054906101000a90046fffffffffffffffffffffffffffffffff168360020160009054906101000a900467ffffffffffffffff168460020160089054906101000a900467ffffffffffffffff16836fffffffffffffffffffffffffffffffff169350826fffffffffffffffffffffffffffffffff1692508167ffffffffffffffff1691508067ffffffffffffffff169050955095509550955095505091939590929450565b60025481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a8557600080fd5b600060149054906101000a900460ff16151515610aa157600080fd5b6001600060146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a16001905090565b600460009054906101000a900460ff1681565b60008060149054906101000a900460ff161515610b1e57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b7957600080fd5b600360008381526020019081526020016000209050610b9781611419565b1515610ba257600080fd5b610bd0828260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611447565b5050565b60055481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600360008481526020019081526020016000209150610c2082611419565b1515610c2b57600080fd5b8160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c8c57600080fd5b610c968382611447565b505050565b600080600360008481526020019081526020016000209050610cbc81611419565b1515610cc757600080fd5b610cd0816114d1565b915050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000809150600090505b6005811015610d3657600681600581101515610d2357fe5b0154820191508080600101915050610d0b565b600582811515610d4257fe5b049250505090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610da557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610e1c57806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd8330846040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1515610f1757600080fd5b6102c65a03f11515610f2857600080fd5b5050505050565b603c816060015167ffffffffffffffff1610151515610f4d57600080fd5b806003600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060408201518160010160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060608201518160020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060808201518160020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050507fabdd2430f9e10eb5db384c1218c42f980dd5fcda760a680a0d95ec506f0963cb81600001518383602001516fffffffffffffffffffffffffffffffff1684604001516fffffffffffffffffffffffffffffffff16856080015167ffffffffffffffff16866060015167ffffffffffffffff16604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390a15050565b6000806000806000806000600360008a8152602001908152602001600020955061118b86611419565b151561119657600080fd5b61119f866114d1565b94508488101515156111b057600080fd5b8560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1693506111e0896115c4565b600085111561123a576111f285611680565b925082850391508373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050151561123957600080fd5b5b84880390503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561127f57600080fd5b7fc2a394cb356728b3540b84dee72ea6de41f44fd94de223565258efe1549ee06f8986863342604051808681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019550505050505060405180910390a184965050505050505092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b151561140157600080fd5b6102c65a03f1151561141257600080fd5b5050505050565b6000808260020160089054906101000a900467ffffffffffffffff1667ffffffffffffffff16119050919050565b611450826115c4565b61145a818361133d565b7f6a3d5a07d548e27ae884a742682e9b929c0a0e4040990bc28c04637c5c077104828242604051808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a15050565b600080600090508260020160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1642111561152a578260020160089054906101000a900467ffffffffffffffff1667ffffffffffffffff16420390505b6115bc8360010160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168460010160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168560020160009054906101000a900467ffffffffffffffff1667ffffffffffffffff168461169b565b915050919050565b60036000828152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006101000a8154906fffffffffffffffffffffffffffffffff02191690556001820160106101000a8154906fffffffffffffffffffffffffffffffff02191690556002820160006101000a81549067ffffffffffffffff02191690556002820160086101000a81549067ffffffffffffffff0219169055505050565b6000612710600254830281151561169357fe5b049050919050565b60008060008085851015156116b2578693506116d0565b8787039250858584028115156116c457fe5b05915081880190508093505b505050949350505050565b60a060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160006fffffffffffffffffffffffffffffffff16815260200160006fffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250905600a165627a7a72305820ce73472da5c157de9546269548efbca452f27ff4336c791069913da59e2a74900029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000f7a6e15dfd5cdd9ef12711bd757a9b6021abf643000000000000000000000000000000000000000000000000000000000000012c
-----Decoded View---------------
Arg [0] : _nftAddr (address): 0xF7a6E15dfD5cdD9ef12711Bd757a9b6021ABf643
Arg [1] : _cut (uint256): 300
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000f7a6e15dfd5cdd9ef12711bd757a9b6021abf643
Arg [1] : 000000000000000000000000000000000000000000000000000000000000012c
Swarm Source
bzzr://ce73472da5c157de9546269548efbca452f27ff4336c791069913da59e2a7490
Loading...
Loading
Loading...
Loading
Net Worth in USD
$1,761.05
Net Worth in ETH
0.891733
Token Allocations
ETH
100.00%
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $1,974.67 | 0.8918 | $1,761.05 |
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.