[Project 1] Open Sea
기술 스택
Client
React
NPM
react-router-dom, web3, ipfs-http-client, tailwindcss
페이지별 기능
Main
Create
ipfs에 이미지를 업로드 시키고 그 url을 이용하여
ERC721 토큰을 발행시킨다
Explore
해당 컨트랙트에서 발행된 ERC721 토큰을 렌더링시킨다
Profile
해당 컨트랙트에서 발행된 ERC721 토큰 중
현재 메타마스크로 로크인된 주소가 보유중인 토큰을 렌더링시킨다
스마트 컨트랙트
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.7;
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import "@openzeppelin/contracts/utils/Counters.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";
import "@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol";
contract cozNFTs is ERC721URIStorage, Ownable, ERC721Enumerable {
using Counters for Counters.Counter;
Counters.Counter private _tokenIds;
constructor() public ERC721("cozNFT", "NFT"){}
function _beforeTokenTransfer(
address from,
address to,
uint256 tokenId
) internal
override(ERC721, ERC721Enumerable) {
super._beforeTokenTransfer(from, to, tokenId);
}
function _burn(
uint256 tokenId
) internal
override(ERC721, ERC721URIStorage) {
super._burn(tokenId);
}
function supportsInterface(bytes4 interfaceId)
public
view
override(ERC721, ERC721Enumerable)
returns (bool)
{
return super.supportsInterface(interfaceId);
}
function tokenURI(
uint256 tokenId
) public view
override(ERC721, ERC721URIStorage) returns (string memory) {
return super.tokenURI(tokenId);
}
function mintNFT(address recipient, string memory tokenURI) public onlyOwner returns (uint256) {
_tokenIds.increment();
uint256 newItemId = _tokenIds.current();
_mint(recipient, newItemId);
_setTokenURI(newItemId, tokenURI);
return newItemId;
}
}
ABI
컨트랙트의 함수와 매개변수들을 JSON 형식으로 나타내는 리스트
openzeppelin
스마트 컨트랙트 개발을 위한 라이브러리
Author And Source
이 문제에 관하여([Project 1] Open Sea), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@royalblue/Project-1-Open-Sea저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)