본문 바로가기
프로그래밍/Portfolio Log

[Portfolio Log] NFT 가구점 11

by YuminK 2023. 12. 26.

 

블록체인 네트워크에 배포할 Contract에 대한 코드를 작성했다. 리믹스 상에서 NFT 민팅, 소각, 판매, 판매 취소, 구매, 정보 가져오기 등 다양한 처리에 대한 테스트를 마쳤으며, 현재 프론트엔드에서 web3js로 통신하고 있다. 

 

대부분의 처리는 이미 완료된 상태이고 메인 페이지 쪽에 판매중인 NFT 정보를 출력하는 부분을 작업하면 어느 정도 마무리가 될 것으로 보인다. 메타마스크를 이용한 블록체인 연동 부분을 마친 이후에는 크롬 익스텐션으로 Wallet 개발을 진행할 예정이다. 나는 메타버스 환경보다 Wallet 개발쪽이 최종보스라고 생각하고 있다. 물론 세부적인 통신 처리는 어느 정도 테스트를 했지만, 디테일한 부분은 아직 해보기 전이니까. 

 

컨트랙트 코드에서 msg.sender, msg.value 같은 값을 사용하는지 여부에 따라 추가적으로 제공해야 하는 정보가 달라지더라. 또한 컨트랙트에서 public으로 선언한 배열, 맵, 함수에 코드로서 접근할 수 있다. (함수처럼)

컨트랙트 코드에서
    function mintAnimalToken() public {
        // tokenId는 개수로 처리하고, type은 랜덤으로 한다. 
        uint256 animalTokenId = totalSupply() + 1;
        uint256 animalType = uint256(keccak256(abi.encodePacked(block.timestamp, msg.sender, animalTokenId))) % 5 + 1;
        animalTypes[animalTokenId] = animalType;
        _mint(msg.sender, animalTokenId); // 소유권 등록
    }

사용할 때
      const response = await mintAnimalTokenContract.methods
        .mintAnimalToken()
        .send({ from: account });

 

OpenZeppelin ERC721 인터페이스 함수 정리

  • balanceOf(owner): 특정 주소가 가진 전체 토큰 개수
  • ownerOf(tokenId): 토큰 소유자 주소 
  • transferFrom(from, to, tokenId)from에서 to로 NFT 전송
  • safeTransferFrom(from, to, tokenId, data): 위와 기능적으로 동일
  • safeTransferFrom(from, to, tokenId): data가 없는 함수
  • approve(to, tokenId): 개별 토큰 전송 권한을 제공하는 함수
  • getApproved(tokenId): 토큰 거래 권한을 가진 주소를 반환하는 함수
  • setApprovalForAll(operator, _approved): 모든 토큰 전송 권한을 부여하거나 취소하는 함수
  • isApprovedForAll(owner, operator): 모든 토큰 전송 권한을 가진 주소인지 확인하는 함수
  • totalSupply(): 발행된 NFT 개수 반환
  • _mint(to, tokenId): 토큰 민팅 함수
  • _bunt(tokenId): 토큰 소각

'프로그래밍 > Portfolio Log' 카테고리의 다른 글

[Portfolio Log] NFT 가구점 13  (1) 2023.12.28
[Portfolio Log] NFT 가구점 12  (0) 2023.12.26
[Portfolio Log] NFT 가구점 10  (0) 2023.12.24
[Portfolio Log] NFT 가구점 9  (1) 2023.12.23
[Portfolio Log] NFT 가구점 8  (0) 2023.12.22

댓글