Block Chain Development

NFT Dapp 개발 연습 #3(구매 스마트 컨트랙트)

PON_Z 2022. 5. 5. 15:48

- 저번에 이어 구매 컨트랙트를 작성해 볼 것이다.

 

- payable을 붙여야 MATIC을 거래할 수 있는 메소드를 사용할 수 있다(폴리곤 네트워크).

- safeTransferFrom(보내는사람, 받는사람, 무엇을 보낼것인가) 와 같이 사용한다.

 

- 코드 작성을 완료하였으면 테스트를 해보자.

 

 

- 우선 판매 컨트랙트 테스트와 똑같이 mint 컨트랙트를 deploy해서 나온 주소를 sale 컨트랙트에 붙여서 deploy한다.

 

 

- 이후 mintSlimeToken을 하나 발행해 주고

 

- sale 컨트랙트의 주소를 복사하여 mint 컨트랙트의 setApprovalForAll의 operator에 입력하고 approved를 true로 하여   판매 승인을 하고

 

 

- 1번토큰의 가격을 10으로 설정하여 판매 등록을 한다.

 

- 확인을 위해 onSaleSlimeTokenArray의 0번을 인덱스를 조회하면 tokenId 1번이 0번 인덱스에 들어와 있고

 tokenId 1번 토큰의 가격을 조회하면 10으로 등록되어 있는 것을 확인할 수 있다.

 

 

- 이제 구매를 위해 토큰번호 1을 넣고 구매를 눌렀더니 오류가 뜬다. Caller sent lower than price 메시지가 떴으므로 아래 오류는 value값이 10보다 작아서 뜨는 오류이다.

 

 

- 이번엔 토큰가격인 10을 입력하여 실행해 보았지만 다른 오류가 뜬다. Caller is slime token owner는 토큰 소유자가

구매자 여서 뜨는 것임을 알 수 있다. 

 

 

- 정상적인 구매를 위해 계정을 교체하고 다시 시도하면

 

 

 

- 정상적으로 구매가 완료되었음을 알 수 있다.

 

 

- 슬라임 토큰이 두번째 계정으로 정상적으로 전송되었는지 확인하기 위해 mint 컨트랙트에서 Ownerof로 토큰 id를

  조회하면 정상적으로 전송이 완료되었음을 알 수 있다.

 

 

 

 

 

ref) https://www.inflearn.com/course/%EB%94%94%EC%95%B1-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8/dashboard

728x90