Cryo Explorer Ethereum Mainnet

Address Contract Verified

Address 0x7f10e51f527EC06426219FC4eefC84a891B75067
Balance 0 ETH
Nonce 1
Code Size 5103 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

5103 bytes
0x6080604052600436106100ef575f3560e01c80635c975abb116100875780638d76a036116100575780638d76a036146102985780639d6030a3146102b7578063b6549f7514610322578063efef39a114610336575f5ffd5b80635c975abb1461020c57806364eb4e201461023c5780636f267c371461025b57806380c4d0481461027a575f5ffd5b80632e556a0e116100c25780632e556a0e1461018e578063350c68d2146101ad5780633ccfd60b146101d957806355d362ca146101ed575f5ffd5b806306a8f8a2146100f3578063115976c41461012f57806316c38b3c1461014e5780631bf602ff1461016f575b5f5ffd5b3480156100fe575f5ffd5b50600254610112906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561013a575f5ffd5b50600154610112906001600160a01b031681565b348015610159575f5ffd5b5061016d610168366004611063565b610349565b005b34801561017a575f5ffd5b5061016d61018936600461109d565b6103af565b348015610199575f5ffd5b5061016d6101a836600461118a565b610410565b3480156101b8575f5ffd5b506101cc6101c736600461109d565b61079c565b6040516101269190611278565b3480156101e4575f5ffd5b5061016d61094f565b3480156101f8575f5ffd5b5061016d61020736600461109d565b6109ba565b348015610217575f5ffd5b5060035461022c90600160a01b900460ff1681565b6040519015158152602001610126565b348015610247575f5ffd5b5061016d6102563660046112ba565b610a1b565b348015610266575f5ffd5b5061016d61027536600461109d565b610c19565b348015610285575f5ffd5b505f54610112906001600160a01b031681565b3480156102a3575f5ffd5b50600354610112906001600160a01b031681565b3480156102c2575f5ffd5b506102fd6102d13660046112ef565b60056020525f90815260409020805460019091015460ff82169161010090046001600160a01b03169083565b6040805193151584526001600160a01b03909216602084015290820152606001610126565b34801561032d575f5ffd5b5061016d610c79565b61016d6103443660046112ef565b610cd6565b6001546001600160a01b031633148061036c57506002546001600160a01b031633145b6103915760405162461bcd60e51b815260040161038890611306565b60405180910390fd5b60038054911515600160a01b0260ff60a01b19909216919091179055565b6001546001600160a01b03163314806103d257506002546001600160a01b031633145b6103ee5760405162461bcd60e51b815260040161038890611306565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b031633148061043357506002546001600160a01b031633145b61044f5760405162461bcd60e51b815260040161038890611306565b60035460408051638e499bcf60e01b815290515f926001600160a01b031691638e499bcf9160048083019260209291908290030181865afa158015610496573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104ba9190611329565b90505f5b8451811015610795576004548382815181106104dc576104dc611340565b6020026020010151101561050c576004548382815181106104ff576104ff611340565b6020026020010181815250505b8185828151811061051f5761051f611340565b6020026020010151106105445760405162461bcd60e51b815260040161038890611354565b60035485516001600160a01b0390911690636352211e9087908490811061056d5761056d611340565b60200260200101516040518263ffffffff1660e01b815260040161059391815260200190565b602060405180830381865afa1580156105ae573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105d2919061137a565b6001600160a01b0316336001600160a01b03161461061e5760405162461bcd60e51b81526020600482015260096024820152682737ba1037bbb732b960b91b6044820152606401610388565b600160055f87848151811061063557610635611340565b602002602001015181526020019081526020015f205f015f6101000a81548160ff02191690831515021790555083818151811061067457610674611340565b602002602001015160055f87848151811061069157610691611340565b602002602001015181526020019081526020015f205f0160016101000a8154816001600160a01b0302191690836001600160a01b031602179055508281815181106106de576106de611340565b602002602001015160055f8784815181106106fb576106fb611340565b602002602001015181526020019081526020015f20600101819055505f6001600160a01b031684828151811061073357610733611340565b60200260200101516001600160a01b03160361078d575f60055f87848151811061075f5761075f611340565b602002602001015181526020019081526020015f205f015f6101000a81548160ff0219169083151502179055505b6001016104be565b5050505050565b60605f60035f9054906101000a90046001600160a01b03166001600160a01b0316638e499bcf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107ef573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108139190611329565b90505f805b8281101561087a575f8181526005602052604090205460ff161515600114801561085f57505f818152600560205260409020546001600160a01b0386811661010090920416145b15610872578161086e81611395565b9250505b600101610818565b505f8167ffffffffffffffff811115610895576108956110b8565b6040519080825280602002602001820160405280156108be578160200160208202803683370190505b505f92509050815b83811015610946575f8181526005602052604090205460ff161515600114801561090d57505f818152600560205260409020546001600160a01b0387811661010090920416145b1561093e578082848151811061092557610925611340565b60209081029190910101528261093a81611395565b9350505b6001016108c6565b50949350505050565b6001546001600160a01b031633148061097257506002546001600160a01b031633145b61098e5760405162461bcd60e51b815260040161038890611306565b60405133904780156108fc02915f818181858888f193505050501580156109b7573d5f5f3e3d5ffd5b50565b6001546001600160a01b03163314806109dd57506002546001600160a01b031633145b6109f95760405162461bcd60e51b815260040161038890611306565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b0316331480610a3e57506002546001600160a01b031633145b610a5a5760405162461bcd60e51b815260040161038890611306565b60035460408051638e499bcf60e01b815290515f926001600160a01b031691638e499bcf9160048083019260209291908290030181865afa158015610aa1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ac59190611329565b9050808410610ae65760405162461bcd60e51b815260040161038890611354565b6003546040516331a9108f60e11b8152600481018690526001600160a01b0390911690636352211e90602401602060405180830381865afa158015610b2d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b51919061137a565b6001600160a01b0316336001600160a01b031614610b9d5760405162461bcd60e51b81526020600482015260096024820152682737ba1037bbb732b960b91b6044820152606401610388565b5f84815260056020526040902080546001600160a01b038516610100026001600160a81b0319909116176001179055600454821015610bdc5760045491505b5f8481526005602052604090206001018290556001600160a01b038316610c13575f848152600560205260409020805460ff191690555b50505050565b6001546001600160a01b0316331480610c3c57506002546001600160a01b031633145b610c585760405162461bcd60e51b815260040161038890611306565b5f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b0316331480610c9c57506002546001600160a01b031633145b610cb85760405162461bcd60e51b815260040161038890611306565b600180546001600160a01b0319908116909155600280549091169055565b6001546001600160a01b0316610d2e5760405162461bcd60e51b815260206004820152601960248201527f436f6e747261637420686173206265656e207265766f6b6564000000000000006044820152606401610388565b600354600160a01b900460ff1615610d7a5760405162461bcd60e51b815260206004820152600f60248201526e10db185a5b481a5cc81c185d5cd959608a1b6044820152606401610388565b60035460408051638e499bcf60e01b815290515f926001600160a01b031691638e499bcf9160048083019260209291908290030181865afa158015610dc1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610de59190611329565b9050808210610e065760405162461bcd60e51b815260040161038890611354565b5f8281526005602052604090205460ff161515600114610e5d5760405162461bcd60e51b8152602060048201526012602482015271546f6b656e206e6f7420666f722073616c6560701b6044820152606401610388565b5f8281526005602052604090205461010090046001600160a01b03163314610ebe5760405162461bcd60e51b81526020600482015260146024820152734e6f7420726573657276656420666f7220796f7560601b6044820152606401610388565b5f82815260056020526040902060010154341015610f155760405162461bcd60e51b81526020600482015260146024820152734d7573742070617920746f20707572636861736560601b6044820152606401610388565b5f546001600160a01b031615610f5e575f80546040516001600160a01b03909116913480156108fc02929091818181858888f19350505050158015610f5c573d5f5f3e3d5ffd5b505b5f8281526005602052604090819020805460ff1916905560035490516331a9108f60e11b8152600481018490526001600160a01b03909116906342842e0e908290636352211e90602401602060405180830381865afa158015610fc3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fe7919061137a565b5f858152600560205260409081902054905160e084901b6001600160e01b03191681526001600160a01b0392831660048201526101009091049091166024820152604481018590526064015f604051808303815f87803b158015611049575f5ffd5b505af115801561105b573d5f5f3e3d5ffd5b505050505050565b5f60208284031215611073575f5ffd5b81358015158114611082575f5ffd5b9392505050565b6001600160a01b03811681146109b7575f5ffd5b5f602082840312156110ad575f5ffd5b813561108281611089565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156110f5576110f56110b8565b604052919050565b5f67ffffffffffffffff821115611116576111166110b8565b5060051b60200190565b5f82601f83011261112f575f5ffd5b813561114261113d826110fd565b6110cc565b8082825260208201915060208360051b860101925085831115611163575f5ffd5b602085015b83811015611180578035835260209283019201611168565b5095945050505050565b5f5f5f6060848603121561119c575f5ffd5b833567ffffffffffffffff8111156111b2575f5ffd5b6111be86828701611120565b935050602084013567ffffffffffffffff8111156111da575f5ffd5b8401601f810186136111ea575f5ffd5b80356111f861113d826110fd565b8082825260208201915060208360051b850101925088831115611219575f5ffd5b6020840193505b8284101561124457833561123381611089565b825260209384019390910190611220565b9450505050604084013567ffffffffffffffff811115611262575f5ffd5b61126e86828701611120565b9150509250925092565b602080825282518282018190525f918401906040840190835b818110156112af578351835260209384019390920191600101611291565b509095945050505050565b5f5f5f606084860312156112cc575f5ffd5b8335925060208401356112de81611089565b929592945050506040919091013590565b5f602082840312156112ff575f5ffd5b5035919050565b6020808252600990820152682737ba1030b236b4b760b91b604082015260600190565b5f60208284031215611339575f5ffd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b6020808252600c908201526b4f7574206f662072616e676560a01b604082015260600190565b5f6020828403121561138a575f5ffd5b815161108281611089565b5f600182016113b257634e487b7160e01b5f52601160045260245ffd5b506001019056fea2646970667358221220c57f962be262aa8148ab9d74f471be341c6c644126f1c4eedd3357990a32200f64736f6c634300081b0033

Verified Source Code Full Match

Compiler: v0.8.27+commit.40a35a09 EVM: cancun Optimization: Yes (200 runs)
he_market.sol 146 lines
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.27;

abstract contract ERC721 {
  function ownerOf(uint256 tokenId) external virtual view returns (address owner);

  function safeTransferFrom(
			    address from,
			    address to,
			    uint256 tokenId
			    ) external virtual;
  
  function numTokens() external virtual view returns (uint256);
}

contract HEMarket {
  address public primary_receiver;
  address public admin1;
  address public admin2;
  ERC721 public historicEvent;
  bool public paused;
  uint256 min_price= 750000000000000000; //0.75 ETH
  
  struct ReserveStruct {
    bool onSale;
    address reservedFor;
    uint256 price;
  }

  mapping(uint256 => ReserveStruct) public reserveList; //for primary sale

  modifier requireAdmin() {
    require(msg.sender==admin1 || msg.sender==admin2,"Not admin");
    _;
  }
  
  constructor() {
    admin1 = msg.sender;

    address _historicEvent_contract_address = 0x5147FbB77fE9627bC10f6dF60e930Af1F02Ff533;
    historicEvent = ERC721(_historicEvent_contract_address);
    
    paused = true;

//    primary_price = 1000000000000000000; //1 ETH
  }

  function setHistoricEventContractAdress(address a) public requireAdmin {
    historicEvent = ERC721(a);
  }

  function setPaused(bool p) public requireAdmin {
    paused = p;
  }
  
  //kill switch
  function revoke() public requireAdmin {
    admin1 = address(0);
    admin2 = address(0);
  }
  
  function setAdmin2(address a) public requireAdmin {
    admin2 = a;
  }
  
  function setPrimaryReceiver(address a) public requireAdmin {
    primary_receiver = a;
  }

  //reserve a primary sale for an address
  function reserve(uint256 tid, address a, uint256 price) public requireAdmin {
    uint256 numTokens = historicEvent.numTokens();
    require(tid < numTokens, "Out of range");
    require (msg.sender == historicEvent.ownerOf(tid), "Not owner");
    
    reserveList[tid].onSale = true;
    reserveList[tid].reservedFor = a;
    if (price < min_price) price = min_price;

    reserveList[tid].price = price;    
    if (a==address(0)) reserveList[tid].onSale = false; 
  }

  //reserve a primary sale for an address
  function reserveMany(uint256[] memory tid, address[] memory a, uint256[] memory price) public requireAdmin {
    uint256 numTokens = historicEvent.numTokens();    
    for (uint256 i=0;i<tid.length;i++) {
      if (price[i] < min_price) price[i] = min_price;
      if (tid[i] >= numTokens) revert("Out of range");
      if (msg.sender != historicEvent.ownerOf(tid[i])) revert("Not owner");
      reserveList[tid[i]].onSale = true;
      reserveList[tid[i]].reservedFor = a[i];
      reserveList[tid[i]].price = price[i];
      if (a[i]==address(0)) reserveList[tid[i]].onSale = false;	  
    }
  }

  function purchase(uint256 tid) public payable {
    require(admin1 != address(0),"Contract has been revoked"); 
    require(!paused, "Claim is paused");
    
    uint256 numTokens = historicEvent.numTokens();    
    require(tid < numTokens, "Out of range");
    require(reserveList[tid].onSale==true, "Token not for sale");
    require(reserveList[tid].reservedFor == msg.sender, "Not reserved for you");
    require(msg.value >= reserveList[tid].price, "Must pay to purchase");

    if (primary_receiver != address(0)) 
      payable(primary_receiver).transfer(msg.value);
    
    reserveList[tid].onSale=false;
    historicEvent.safeTransferFrom(historicEvent.ownerOf(tid),reserveList[tid].reservedFor,tid);
  }

  //returns token ids reserved for an address
  function tokensReserved(address a) public view returns (uint256[] memory) {
    uint256 numTokens = historicEvent.numTokens();    
    uint k=0;
    for (uint256 tid =0; tid< numTokens;tid++) {
      if (reserveList[tid].onSale==true &&
	  reserveList[tid].reservedFor == a) {
	k++;
      }
    }
    
    uint256[] memory rlist = new uint256[](k);
    
    k=0;    
    for (uint256 tid =0; tid< numTokens;tid++) {
      if (reserveList[tid].onSale==true &&
	  reserveList[tid].reservedFor == a) {
	rlist[k] = tid;
	k++;
      }
    }
    return rlist;
  }

  function withdraw() public requireAdmin {
    payable(msg.sender).transfer(address(this).balance);
  }
  
  
}

Read Contract

admin1 0x115976c4 → address
admin2 0x06a8f8a2 → address
historicEvent 0x8d76a036 → address
paused 0x5c975abb → bool
primary_receiver 0x80c4d048 → address
reserveList 0x9d6030a3 → bool, address, uint256
tokensReserved 0x350c68d2 → uint256[]

Write Contract 9 functions

These functions modify contract state and require a wallet transaction to execute.

purchase 0xefef39a1
uint256 tid
reserve 0x64eb4e20
uint256 tid
address a
uint256 price
reserveMany 0x2e556a0e
uint256[] tid
address[] a
uint256[] price
revoke 0xb6549f75
No parameters
setAdmin2 0x1bf602ff
address a
setHistoricEventContractAdress 0x55d362ca
address a
setPaused 0x16c38b3c
bool p
setPrimaryReceiver 0x6f267c37
address a
withdraw 0x3ccfd60b
No parameters

Recent Transactions

No transactions found for this address