Address Contract Verified
Address
0x7f10e51f527EC06426219FC4eefC84a891B75067
Balance
0 ETH
Nonce
1
Code Size
5103 bytes
Creator
0x95FDE6CF...D947 at tx 0x7d2e5897...ba00ca
Indexed Transactions
0
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