반업주부의 일상 배움사
블록체인 하나씩 알아보기 :: Market 본문
반응형
코인을 만들었어요.
2022.07.19 - [IT 인터넷/Blockchain] - 블록체인 하나씩 알아보기 :: ERC20
NFT도 만들었고요.
2022.07.19 - [IT 인터넷/Blockchain] - 블록체인 하나씩 알아보기 :: ERC721
이제 마켓을 만들고 NFT를 판매할게요.
BanjubuMarket.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
contract BanjubuMarket is Ownable {
address private _coinContract;
address private _nftContract;
mapping(uint256 => address) private nftOwners;
mapping(uint256 => uint256) private nftPrices;
function initialize(address coinContract, address nftContract) public onlyOwner {
_coinContract = coinContract;
_nftContract = nftContract;
}
function sellNFT(uint256 tokenId, uint256 coinAmount) public {
ERC721(_nftContract).transferFrom(msg.sender, address(this), tokenId);
nftOwners[tokenId] = msg.sender;
nftPrices[tokenId] = coinAmount;
}
function buyNFT(uint256 tokenId) public {
ERC721(_nftContract).transferFrom(address(this), msg.sender, tokenId);
uint256 coinAmount = nftPrices[tokenId];
ERC20(_coinContract).transferFrom(msg.sender, address(this), coinAmount);
ERC20(_coinContract).transfer(nftOwners[tokenId], coinAmount);
delete nftOwners[tokenId];
delete nftPrices[tokenId];
}
}
Rinkeby에 올렸어요.
https://rinkeby.etherscan.io/address/0xFD36a32354aE223B5b176F0D7c89E04f13e31bd8
초기화 먼저 할게요.
판매하고 다른 사용자로 구매하면 끝.
영어, 중국어 공부중이신가요?
홈스쿨 교재. 한 권으로 가족 모두 할 수 있어요!
반응형
LIST
'IT 인터넷 > Blockchain' 카테고리의 다른 글
[Solidity] 문자열이 비어 있는지 확인 (0) | 2022.08.14 |
---|---|
메타마스크에 폴리곤 테스트넷(Mumbai) 추가 :: Metamask Polygon Testnet (0) | 2022.07.29 |
블록체인 하나씩 알아보기 :: ERC721 (0) | 2022.07.19 |
블록체인 하나씩 알아보기 :: ERC20 (0) | 2022.07.19 |
[블록체인/NFT] 이미지 생성부터 오픈씨까지 (Rinkeby/Ethereum) (0) | 2022.05.03 |
Comments