Last active
January 9, 2024 08:54
-
-
Save dabit3/52e818faa83449bb5303cb868aee78f5 to your computer and use it in GitHub Desktop.
Revisions
-
dabit3 revised this gist
Jul 20, 2021 . 1 changed file with 2 additions and 2 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -117,7 +117,7 @@ contract NFTMarket is ReentrancyGuard { MarketItem[] memory items = new MarketItem[](unsoldItemCount); for (uint i = 0; i < itemCount; i++) { if (idToMarketItem[i + 1].owner == address(0)) { uint currentId = i + 1; MarketItem storage currentItem = idToMarketItem[currentId]; items[currentIndex] = currentItem; currentIndex += 1; @@ -141,7 +141,7 @@ contract NFTMarket is ReentrancyGuard { MarketItem[] memory items = new MarketItem[](itemCount); for (uint i = 0; i < totalItemCount; i++) { if (idToMarketItem[i + 1].owner == msg.sender) { uint currentId = i + 1; MarketItem storage currentItem = idToMarketItem[currentId]; items[currentIndex] = currentItem; currentIndex += 1; -
dabit3 revised this gist
Jun 23, 2021 . 1 changed file with 0 additions and 5 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -109,11 +109,6 @@ contract NFTMarket is ReentrancyGuard { payable(owner).transfer(listingPrice); } function fetchMarketItems() public view returns (MarketItem[] memory) { uint itemCount = _itemIds.current(); uint unsoldItemCount = _itemIds.current() - _itemsSold.current(); -
dabit3 revised this gist
Jun 23, 2021 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -11,7 +11,7 @@ contract NFT is ERC721URIStorage { Counters.Counter private _tokenIds; address contractAddress; constructor(address marketplaceAddress) ERC721("Nader's Digital Marketplace", "NDM") { contractAddress = marketplaceAddress; } -
dabit3 revised this gist
Jun 23, 2021 . 1 changed file with 10 additions and 3 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -30,7 +30,13 @@ contract NFTMarket is ReentrancyGuard { using Counters for Counters.Counter; Counters.Counter private _itemIds; Counters.Counter private _itemsSold; address payable owner; uint256 listingPrice = 0.1 ether; constructor() { owner = payable(msg.sender); } struct MarketItem { uint itemId; @@ -62,10 +68,10 @@ contract NFTMarket is ReentrancyGuard { uint256 price ) public payable nonReentrant { require(price > 0, "Price must be at least 1 wei"); require(msg.value == listingPrice, "Price must be equal to listing price"); _itemIds.increment(); uint256 itemId = _itemIds.current(); idToMarketItem[itemId] = MarketItem( itemId, @@ -91,7 +97,7 @@ contract NFTMarket is ReentrancyGuard { function createMarketSale( address nftContract, uint256 itemId ) public payable nonReentrant { uint price = idToMarketItem[itemId].price; uint tokenId = idToMarketItem[itemId].tokenId; require(msg.value == price, "Please submit the asking price in order to complete the purchase"); @@ -100,6 +106,7 @@ contract NFTMarket is ReentrancyGuard { IERC721(nftContract).transferFrom(address(this), msg.sender, tokenId); idToMarketItem[itemId].owner = payable(msg.sender); _itemsSold.increment(); payable(owner).transfer(listingPrice); } function fetchMarketItem(uint itemId) public view returns (MarketItem memory) { -
dabit3 revised this gist
Jun 22, 2021 . 1 changed file with 44 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -6,6 +6,26 @@ import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol"; import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; import "@openzeppelin/contracts/token/ERC721/ERC721.sol"; contract NFT is ERC721URIStorage { using Counters for Counters.Counter; Counters.Counter private _tokenIds; address contractAddress; constructor(address marketplaceAddress) ERC721("Eat The Blocks NFTs", "ETBNFT") { contractAddress = marketplaceAddress; } function createToken(string memory tokenURI) public returns (uint) { _tokenIds.increment(); uint256 newItemId = _tokenIds.current(); _mint(msg.sender, newItemId); _setTokenURI(newItemId, tokenURI); setApprovalForAll(contractAddress, true); return newItemId; } } contract NFTMarket is ReentrancyGuard { using Counters for Counters.Counter; Counters.Counter private _itemIds; @@ -104,4 +124,28 @@ contract NFTMarket is ReentrancyGuard { return items; } function fetchMyNFTs() public view returns (MarketItem[] memory) { uint totalItemCount = _itemIds.current(); uint itemCount = 0; uint currentIndex = 0; for (uint i = 0; i < totalItemCount; i++) { if (idToMarketItem[i + 1].owner == msg.sender) { itemCount += 1; } } MarketItem[] memory items = new MarketItem[](itemCount); for (uint i = 0; i < totalItemCount; i++) { if (idToMarketItem[i + 1].owner == msg.sender) { uint currentId = idToMarketItem[i + 1].itemId; MarketItem storage currentItem = idToMarketItem[currentId]; items[currentIndex] = currentItem; currentIndex += 1; } } return items; } } -
dabit3 revised this gist
Jun 22, 2021 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -87,7 +87,7 @@ contract NFTMarket is ReentrancyGuard { return item; } function fetchMarketItems() public view returns (MarketItem[] memory) { uint itemCount = _itemIds.current(); uint unsoldItemCount = _itemIds.current() - _itemsSold.current(); uint currentIndex = 0; -
dabit3 revised this gist
Jun 22, 2021 . 1 changed file with 6 additions and 10 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -87,25 +87,21 @@ contract NFTMarket is ReentrancyGuard { return item; } function fetchMarketItems() public view returns (MarketItem[] memory) { uint itemCount = _itemIds.current(); uint unsoldItemCount = _itemIds.current() - _itemsSold.current(); uint currentIndex = 0; MarketItem[] memory items = new MarketItem[](unsoldItemCount); for (uint i = 0; i < itemCount; i++) { if (idToMarketItem[i + 1].owner == address(0)) { uint currentId = idToMarketItem[i + 1].itemId; MarketItem storage currentItem = idToMarketItem[currentId]; items[currentIndex] = currentItem; currentIndex += 1; } } return items; } } -
dabit3 revised this gist
Jun 22, 2021 . 1 changed file with 14 additions and 22 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -6,25 +6,10 @@ import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol"; import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; import "@openzeppelin/contracts/token/ERC721/ERC721.sol"; contract NFTMarket is ReentrancyGuard { using Counters for Counters.Counter; Counters.Counter private _itemIds; Counters.Counter private _itemsSold; uint[] marketItems; struct MarketItem { @@ -61,8 +46,8 @@ contract NFTMarket is ReentrancyGuard { _itemIds.increment(); uint256 itemId = _itemIds.current(); marketItems.push(itemId); idToMarketItem[itemId] = MarketItem( itemId, nftContract, tokenId, @@ -94,6 +79,7 @@ contract NFTMarket is ReentrancyGuard { idToMarketItem[itemId].seller.transfer(msg.value); IERC721(nftContract).transferFrom(address(this), msg.sender, tokenId); idToMarketItem[itemId].owner = payable(msg.sender); _itemsSold.increment(); } function fetchMarketItem(uint itemId) public view returns (MarketItem memory) { @@ -102,16 +88,22 @@ contract NFTMarket is ReentrancyGuard { } function fetchMarketItems() public view returns (MarketItem[] memory) { uint itemCount = _itemIds.current(); uint unsoldItemCount = _itemIds.current() - _itemsSold.current(); uint currentIndex = 0; uint[] memory unsoldItemIds = new uint[](unsoldItemCount); for (uint i = 0; i < itemCount; i++) { if (idToMarketItem[i + 1].owner == address(0)) { uint itemId = idToMarketItem[i + 1].itemId; unsoldItemIds[currentIndex] = itemId; currentIndex += 1; } } MarketItem[] memory items = new MarketItem[](unsoldItemCount); for (uint i = 0; i < unsoldItemCount; i++) { uint currentId = unsoldItemIds[i]; MarketItem storage currentItem = idToMarketItem[currentId]; items[i] = currentItem; } return items; -
dabit3 revised this gist
Jun 20, 2021 . 1 changed file with 10 additions and 4 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -26,7 +26,7 @@ contract NFTMarket is ReentrancyGuard { using Counters for Counters.Counter; Counters.Counter private _itemIds; uint[] marketItems; struct MarketItem { uint itemId; address nftContract; @@ -101,10 +101,16 @@ contract NFTMarket is ReentrancyGuard { return item; } function fetchMarketItems() public view returns (MarketItem[] memory) { uint itemCount = marketItems.length; uint unsoldItemCount = 0; for (uint i = 0; i < itemCount; i++) { if (idToMarketItem[i + 1].owner == address(0)) { unsoldItemCount += 1; } } MarketItem[] memory items = new MarketItem[](unsoldItemCount); for (uint i = 0; i < unsoldItemCount; i++) { MarketItem storage currentItem = idToMarketItem[i + 1]; items[i] = currentItem; } -
dabit3 revised this gist
Jun 19, 2021 . 1 changed file with 33 additions and 23 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,22 +1,21 @@ // SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity ^0.8.4; import "@openzeppelin/contracts/utils/Counters.sol"; import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol"; import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; import "@openzeppelin/contracts/token/ERC721/ERC721.sol"; contract NFT is ERC721URIStorage { using Counters for Counters.Counter; Counters.Counter private _tokenIds; constructor() ERC721("Eat The Blocks NFTs", "ETBNFT") {} function createToken(string memory tokenURI) public returns (uint) { _tokenIds.increment(); uint256 newItemId = _tokenIds.current(); _mint(msg.sender, newItemId); _setTokenURI(newItemId, tokenURI); return newItemId; @@ -25,10 +24,11 @@ contract NFT is ERC721URIStorage { contract NFTMarket is ReentrancyGuard { using Counters for Counters.Counter; Counters.Counter private _itemIds; uint[] marketItems; struct MarketItem { uint itemId; address nftContract; uint256 tokenId; address payable seller; @@ -39,11 +39,12 @@ contract NFTMarket is ReentrancyGuard { mapping(uint256 => MarketItem) private idToMarketItem; event MarketItemCreated ( uint indexed itemId, address indexed nftContract, uint256 indexed tokenId, address seller, address owner, uint256 price ); function getMarketItem(uint256 marketItemId) public view returns (MarketItem memory) { @@ -57,45 +58,54 @@ contract NFTMarket is ReentrancyGuard { ) public payable nonReentrant { require(price > 0, "Price must be at least 1 wei"); _itemIds.increment(); uint256 itemId = _itemIds.current(); marketItems.push(itemId); idToMarketItem[itemId] = MarketItem( itemId, nftContract, tokenId, payable(msg.sender), payable(address(0)), price ); IERC721(nftContract).transferFrom(msg.sender, address(this), tokenId); emit MarketItemCreated( itemId, nftContract, tokenId, msg.sender, address(0), price ); } function createMarketSale( address nftContract, uint256 itemId ) payable public { uint price = idToMarketItem[itemId].price; uint tokenId = idToMarketItem[itemId].tokenId; require(msg.value == price, "Please submit the asking price in order to complete the purchase"); idToMarketItem[itemId].seller.transfer(msg.value); IERC721(nftContract).transferFrom(address(this), msg.sender, tokenId); idToMarketItem[itemId].owner = payable(msg.sender); } function fetchMarketItem(uint itemId) public view returns (MarketItem memory) { MarketItem memory item = idToMarketItem[itemId]; return item; } function fetchMarketItems() public view returns (MarketItem[] memory){ uint itemCount = _itemIds.current(); MarketItem[] memory items = new MarketItem[](itemCount); for (uint i = 0; i < itemCount; i++) { MarketItem storage currentItem = idToMarketItem[i + 1]; items[i] = currentItem; } return items; -
dabit3 revised this gist
Jun 17, 2021 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -91,7 +91,7 @@ contract NFTMarket is ReentrancyGuard { IERC721(nftContract).transferFrom(address(this), msg.sender, tokenId); } function fetchMarketItems() public view returns (MarketItem[] memory){ uint itemCount = _auctionIds.current(); MarketItem[] memory items = new MarketItem[](itemCount); for (uint i = 1; i < itemCount; i++) { -
dabit3 revised this gist
Jun 17, 2021 . 1 changed file with 2 additions and 4 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -6,8 +6,6 @@ import "@openzeppelin/contracts/utils/Counters.sol"; import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol"; import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; contract NFT is ERC721URIStorage { using Counters for Counters.Counter; Counters.Counter private _tokenIds; @@ -87,12 +85,12 @@ contract NFTMarket is ReentrancyGuard { uint256 tokenId ) payable public { uint price = idToMarketItem[tokenId].price; require(msg.value == price, "Please submit the asking price in order to complete the purchase"); idToMarketItem[tokenId].seller.transfer(msg.value); IERC721(nftContract).transferFrom(address(this), msg.sender, tokenId); } function fetchTokens() public view returns (MarketItem[] memory){ uint itemCount = _auctionIds.current(); MarketItem[] memory items = new MarketItem[](itemCount); -
dabit3 revised this gist
Jun 17, 2021 . 1 changed file with 5 additions and 6 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -14,13 +14,12 @@ contract NFT is ERC721URIStorage { constructor() ERC721("Token", "PETNFTS") {} function createToken(string memory tokenURI) public returns (uint256) { _tokenIds.increment(); uint256 newItemId = _tokenIds.current(); _mint(msg.sender, newItemId); _setTokenURI(newItemId, tokenURI); return newItemId; } @@ -89,15 +88,15 @@ contract NFTMarket is ReentrancyGuard { ) payable public { uint price = idToMarketItem[tokenId].price; require(msg.value == price); idToMarketItem[tokenId].seller.transfer(msg.value); IERC721(nftContract).transferFrom(address(this), msg.sender, tokenId); } function fetchTokens() public view returns (MarketItem[] memory){ uint itemCount = _auctionIds.current(); MarketItem[] memory items = new MarketItem[](itemCount); for (uint i = 1; i < itemCount; i++) { MarketItem storage currentItem = idToMarketItem[i]; items[i] = currentItem; } -
dabit3 created this gist
Jun 17, 2021 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,106 @@ // SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity ^0.8.4; import "@openzeppelin/contracts/token/ERC721/ERC721.sol"; import "@openzeppelin/contracts/utils/Counters.sol"; import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol"; import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; // 0x0d2b873fdca2a1561f0e6c5e40af4e90e817f5c07be445297312c6d3e65c01e5 // 0xe5f0332CA42459333149b67aF2d0E486D03F8a83 contract NFT is ERC721URIStorage { using Counters for Counters.Counter; Counters.Counter private _tokenIds; constructor() ERC721("Token", "PETNFTS") {} function createToken(address recipient, string memory tokenURI) public returns (uint256) { require(recipient == msg.sender, "Can only mint tokens to your own address"); _tokenIds.increment(); uint256 newItemId = _tokenIds.current(); _mint(recipient, newItemId); _setTokenURI(newItemId, tokenURI); return newItemId; } } contract NFTMarket is ReentrancyGuard { using Counters for Counters.Counter; Counters.Counter private _auctionIds; uint[] marketItems; struct MarketItem { address nftContract; uint256 tokenId; address payable seller; address payable owner; uint256 price; } mapping(uint256 => MarketItem) private idToMarketItem; event MarketItemCreated ( address indexed seller, address indexed nftContract, uint256 indexed tokenId, uint256 price, uint256 auctionId ); function getMarketItem(uint256 marketItemId) public view returns (MarketItem memory) { return idToMarketItem[marketItemId]; } function createMarketItem( address nftContract, uint256 tokenId, uint256 price ) public payable nonReentrant { require(price > 0, "Price must be at least 1 wei"); _auctionIds.increment(); uint256 auctionId = _auctionIds.current(); marketItems.push(auctionId); idToMarketItem[auctionId] = MarketItem( nftContract, tokenId, payable(msg.sender), payable(address(0)), // bidder is only known once a bid has been placed price ); IERC721(nftContract).transferFrom(msg.sender, address(this), tokenId); emit MarketItemCreated( msg.sender, nftContract, tokenId, price, auctionId ); } function createMarketSale( address nftContract, uint256 tokenId ) payable public { uint price = idToMarketItem[tokenId].price; require(msg.value == price); idToMarketItem[tokenId].seller.transfer(msg.value); IERC721(nftContract).transferFrom(address(this), msg.sender, tokenId); } function fetchTokens() public view returns (MarketItem[] memory){ uint itemCount = _auctionIds.current(); MarketItem[] memory items = new MarketItem[](itemCount); for (uint i = 0; i < itemCount; i++) { MarketItem storage currentItem = idToMarketItem[i]; items[i] = currentItem; } return items; } }