NFT 마켓플레이스
FlutterDev의 NFT 마켓플레이스 서비스입니다.
개요
NFT 마켓플레이스는 ERC721 토큰을 거래할 수 있는 탈중앙화 플랫폼입니다.
- 고정가 판매: 즉시 구매 가능한 고정 가격 리스팅
- 경매 시스템: 입찰 기반 경매 (최소 1시간 ~ 최대 7일)
- 플랫폼 수수료: 2.5% (판매 금액에서 차감)
사용 방법
1. NFT 민팅
FlutterNFT 컬렉션에서 직접 NFT를 민팅할 수 있습니다.
- 마켓플레이스 접속 → "NFT 민팅" 메뉴
- 이미지 업로드 및 메타데이터 입력
- MetaMask 서명으로 민팅 완료
2. NFT 판매 (고정가)
- 보유 NFT 선택 → "판매하기"
- 마켓플레이스 Approve (최초 1회)
- 판매 가격 설정
- 리스팅 완료
3. NFT 구매
- 마켓플레이스에서 NFT 탐색
- "구매" 버튼 클릭
- 표시된 금액으로 트랜잭션 서명
- NFT 소유권 이전 완료
4. 경매 생성
- 보유 NFT 선택 → "경매 생성"
- 시작가 설정
- 경매 기간 설정 (1시간 ~ 7일)
- 경매 시작
5. 경매 입찰
- 첫 입찰: 시작가 이상 필요
- 추가 입찰: 현재 최고가의 5% 이상 상회 필요
- 경매 종료 시 최고 입찰자에게 NFT 전송
- 낙찰 실패 시 입찰금 반환 가능
스마트 컨트랙트
배포된 컨트랙트
| 컨트랙트 | 주소 |
|---|---|
| FlutterNFT | 0x35D5c3E04AFad435C1AED7bcBAF930F936375Cce |
| NFTMarketplace | 0xB3a8EAF0bd2715E471fbF3E08AA831cEFDC1B5FD |
FlutterNFT (ERC721)
공식 NFT 컬렉션 컨트랙트입니다.
solidity
// NFT 민팅 (Base64 메타데이터 URI)
function mint(string memory uri) external returns (uint256 tokenId)
// 총 민팅된 수량
function totalMinted() external view returns (uint256)
// 특정 주소의 모든 토큰 ID
function tokensOfOwner(address owner) external view returns (uint256[] memory)NFTMarketplace
NFT 거래를 위한 마켓플레이스 컨트랙트입니다.
고정가 판매
solidity
// NFT 리스팅 (판매 등록)
function listItem(
address nftContract, // NFT 컨트랙트 주소
uint256 tokenId, // 토큰 ID
uint256 price // 판매가 (wei)
) external returns (uint256 listingId)
// NFT 구매
function buyItem(uint256 listingId) external payable
// 리스팅 취소
function cancelListing(uint256 listingId) external경매
solidity
// 경매 생성
function createAuction(
address nftContract,
uint256 tokenId,
uint256 startPrice, // 시작가 (wei)
uint256 duration // 기간 (초), 1시간~7일
) external returns (uint256 auctionId)
// 입찰
function placeBid(uint256 auctionId) external payable
// 경매 종료 (기간 만료 후)
function endAuction(uint256 auctionId) external
// 입찰금 반환 (낙찰 실패자)
function withdrawPendingReturn(uint256 auctionId) externalView 함수
solidity
// 활성 리스팅 목록
function getActiveListings() external view returns (uint256[] memory)
// 활성 경매 목록
function getActiveAuctions() external view returns (uint256[] memory)
// 리스팅 상세
function getListing(uint256 listingId) external view returns (
address seller,
address nftContract,
uint256 tokenId,
uint256 price,
bool active
)
// 경매 상세
function getAuction(uint256 auctionId) external view returns (
address seller,
address nftContract,
uint256 tokenId,
uint256 startPrice,
uint256 highestBid,
address highestBidder,
uint256 endTime,
bool active,
bool ended
)수수료 구조
| 항목 | 비율 |
|---|---|
| 플랫폼 수수료 | 2.5% |
| 최소 입찰 증가폭 | 5% |
주의사항
- NFT 리스팅 시 마켓플레이스에 NFT가 에스크로됩니다
- 경매 입찰금은 컨트랙트에 보관되며, 낙찰 실패 시 수동으로 인출해야 합니다
- 경매는 시작 후 취소할 수 없습니다
외부 NFT 거래
FlutterNFT 외에도 모든 ERC721 표준 NFT를 거래할 수 있습니다.
- NFT 컨트랙트 주소 입력
- 토큰 ID 입력
- 마켓플레이스에 Approve
- 리스팅 또는 경매 생성
ABI
전체 ABI는 다음에서 확인 가능:
- FlutterNFT:
/home/blockchain/nft-marketplace/artifacts/contracts/FlutterNFT.sol/FlutterNFT.json - NFTMarketplace:
/home/blockchain/nft-marketplace/artifacts/contracts/NFTMarketplace.sol/NFTMarketplace.json