프로젝트 1 - Opensea 클론코딩 🧑🏻‍💻

김기대·2021년 12월 21일
3

블록체인 개발

목록 보기
4/12
post-thumbnail

오픈씨 (클론코딩) - 거래소 구현에 앞서!!

Opensea 란? 🤔

간단히 말하면 NFT market.

발행한 NFT 토큰을 사고 파는 웹 거래소 느낌의 사이트.

아트작품이나 음악, 스포츠 등.. 여러가지 NFT를 거래할 수 있음.

프로젝트. Opensea 클론코딩 🧐

깃 허브 링크 참고.

첫 팀원들과 개발 로직 구상.

첫 각자 역할 분담.

  1. contract SFT 배포, 등록, 거래
  2. contract NFT 배포, 등록, 조회 - 맡은 것. 🧐
  3. contract Klaytn NFT 배포, 등록, 로그인, 로그아웃

기간은 대략 4,5일 정도 했던거 같다.

구현.

create

로직 : Create 페이지 -> 값 입력 -> create 버튼
views/Create.js 에서 값 입력 받아 server로 post 넘겨줌
넘기기 전에 컨트랙트의 minting 실행(TokenId).
image 를 ipfs에 등록하고 해시값을 받음.(Image URI)
입력받은 값들과 mint, ipfs 값들을 메타데이터로 만듬.(Heroku) - Token URI
server에서 디비(mongodb)에 계정이나 tokenId 등 정보 저장.
핵심은 mint!!

buy

로직 : Home 페이지(Search) -> 나열되어 있는 NFT 중 Buy 버튼
views/MainPage.js 에서 버튼 클릭 시 현재 접속 계정, 컨트랙트, NFT 오너 확인
Pay - from, go, gas, price 등.. 보냄. Block Chain 트랜잭션 보냄. 트랜잭션 해시값. receipt 받기.
서버에서 계정의 tokenId 확인, seller, buyer 의 더하고 빼기 (소유권 이전)
컨트랙트 transfer, tokenId 사용.
그리고 나서 from, to : owner 바꿈.

거래소 구현을 해보았다. 🧐

개발하고 나서의 흐름 정리.

느낀점.

처음 계획할 때 구현할 기능들을 많이 못해서 아쉬웠다.
요번에는 ipfs 처리, 서버와 통신 등의 위주로 개발했는데 많이 부족함을 느꼈다.
원래 계획했던 NFT erc-721 부분까지도 하려고 했는데 하지 못 해서 전체적인 계획의 SFT, Klaytn NFT는 구현을 하지 못했다.
깃허브 협업의 중요함도 많이 느꼈다.
아직 실력이 많이 부족하고 많이 해봐야 한다는 것을 느꼈다.
ToTheMoon 팀원들에게 너무 감사함을 느꼈다.
나중 프로젝트에서는 컨트랙트도 제대로 짜볼 생각이다. 👻

어려웠던 점.

ipfs 이미지 등록.

파일 -> 버퍼 -> ipfs 해시값 빼오는 과정을 모듈화하고 외부에서 함수로 Create에서 끌어다 쓰려고 시도했는데 api로 ipfs 해시값을 만들어 오는 과정이 시간이 좀 걸려서 스케줄링에 어려움을 겪음.

급한대로 Create내에서 통신전에 이미지 파일 등록시 가져오게 수정.
나중엔 동기/비동기 Promise 잘 활용하여 수정해볼 생각이다.👻

팀원이 작성한 컨트랙트 코드, heroku, 데이터베이스 보면서 로직 이해하기.

처음에는 ERC721 NFT 부분을 내가 하려고 했는데 전체적인 흐름부터가 이해하기 어려워서 힘들었다. 그리고 create 부분의 ipfs 작업을 하는 것도 시간이 오래 걸려 맡은 작업을 많이 못했다. 그래도 팀원들이 많이 도와줘서 전체적인 흐름과 컨트랙트, 네트워크 설정 등 많은 것을 알 수 있게 되었다.

깃허브 주소

: 오픈씨 클론코딩

개발 회고

목적

이번 짧은 프로젝트를 통해서 거래소의 최대한 많은 기능을 구현해보기.

Keep(장점, 유지할 것)

전체적인 로직 파악과 함수 스케줄링의 시도.
함수 구현에서 많은 시도와 다양한 로직 구성.

Problem(단점, 변경 또는 버릴 것)

아직은 막연하게 느껴지는 함수 구현이 있음.
지저분한 코드, 내장함수를 적용하는 게 느림, 생각이 많음.
한 문제를 가지고 너무 시간을 오래끔.

Try(시도할 점, 앞으로의 행동)

필요한 기능을 빠르게 구현하는 생각을 가질것.
컨트랙트를 많이 작성해보기.
웹의 생명 주기, 분기 등을 다시 복습해보기.
코드의 함수화.
거래 로직 다시 이해하기.

profile
블록체인 백엔드 개발자

0개의 댓글