NFT 거래소 프로젝트를 재진행하면서 오픈씨가 어떻게 작동하는지 공부하는 시간을 가지고 있다. 오픈씨는 자체적으로 nft를 발행할 수 있는 서비스를 제공한다. 오픈씨에서 자체적으로 제공하는 민팅 툴을 사용해서 nft를 민팅하는 경우엔 ERC1155를 통해서 발행한다. ERC1155 아무래도 멀티 토큰을 지원하는 만큼 비용은 적게 들지만, 개별 토큰에 대한 자유도는 떨어진다는 단점이 있다. 오픈씨는 자체적으로 배포한 ERC721 컨트랙트의 nft들을 별도의 절차 없이 알아서 가져와 마켓에서 보여준다.
오픈씨에서 NFT를 발행하면 리스팅까지는 가스비가 발생하지 않는다. 가스비가 처음으로 부과되는 시점은 NFT 거래가 발생하는 순간이다. 그렇기 때문에, NFT를 발행하는 작가들이 부담하는 가스비는 생각보다 많지 않다. 이를 가능하게 하는 것을 레이지 민팅 (Lazy Minting) 이라고 한다.
* Lazy Minting 이란?
레이지 민팅은 말 그대로 게으른 민팅이다. 위에서 쓴 것처럼 레이지 민팅은 민팅이 필요한 시점의 기준으로 토큰의 소유권이 처음으로 바뀌는 순간으로 바라본다. 창작자가 NFT를 만들어내는 순간이 아닌, 실제로 민팅이 필요한 시점으로 미루는 것이다. 그렇기 때문에 레이지 민팅을 Mint and Transfer 라고도 한다. 이는 창작자가 NFT 생성에 필요한 가스비를 선지불하지 않도록 만들어 주기에, 창작에 필요한 비용을 최소화할 수 있게 해준다.
레이지 민팅의 핵심은 NFT를 즉시 발행하는 것이 아니라, 암호학적 서명을 통해 사후에 해당 NFT를 발행할 수 있도록 하는 것이다. NFT 창작자는 NFT 생성에 필요한 모든 데이터를 자신의 프라이빗 키를 이용하여 서명을 하게 된다. 이를 티켓 또는 바우처라고 부르는데, 구매자가 해당 NFT에 대한 가격을 지불하면 NFT를 민팅 후 구매자에게 소유권을 넘겨주게 된다.
오픈씨에서 NFT를 발행하면 실제로 저장되는 데이터는 이름밖에 없다. 나머지는 블록체인 밖의 저장공간에 저장된다. 이렇게 발행된 NFT의 경우 ERC1155로 발행하고 사용자는 초기 지갑생성 트랜잭션만 보내면 오픈씨에 아이템이 리스팅 된다.
컨트랙트 형태의 지갑을 통해 와이번 프로토콜(Wyvern Protocol) 과 상호작용을 하기 때문에 지갑을 만드는 과정이 필요한 것이다. 와이번 프로토콜이 지갑을 컨트랙트 주소 형태로 만든 후 이를 레지스트리에 등록시켜 이후 프로세스를 서명을 모아 한 번에 처리해주는 릴레리어 형내틔 구조이기 때문에 온체인 트랜잭션은 오직 지갑생성 트랜잭션 한 번만 있다. 그 이후에는 리스팅 할 때 오프체인 정보를 서명해서 wyvern exchange contract에 넘기기만 하면 된다. 오프체인이기 때문에 이더리움 수수료는 발생하지 않는다.
💡와이번 프로토콜 / 시포트 프로토콜
와이번 프로토콜은 오픈소스로 어떤 프로젝트든지 거래소에 대한 쉬운 지원을 해주는 것이 목적인 서비스라고 한다.
위에 작성한 것처럼 오픈씨는 이전에는 와이번 프로토콜을 사용했었다. 하지만 현재는 가스비 절감을 위해 자체 개발한 시포트 프로토콜로 마이그레이션을 완료했다. 오픈씨는 이는 모든 NFT 빌더를 위한 것이라고 강조했는데 시포트과 기존의 방식과 비교했을 때 가장 큰 차이점은 NFT 거래를 위해 ETH / ERC20 / ERC721 / ERC1155 등 다른 자산과 다수로 거래할 수 있다는 점이라고 한다. 그렇기 때문에, NFT 보유자가 한 번의 가스 요금으로 많은 NFT 를 한 번에 판매할 수 있어 가스비 절감 효과가 있다고 한다.
Introducing Seaport Protocol - OpenSea Blog
Discover unique NFTs and receive news, updates, tips, and tricks on the world’s first and largest NFT marketplace. Welcome to the OpenSea’s Blog.
opensea.io
오늘의 결론은 시포트 프로토콜에 대해 좀 더 공부해봐야겠다.
Seaport 1.0 | Address 0x00000000006cee72100d161c57ada5bb2be1ca79 | Etherscan
The Contract Address 0x00000000006cee72100d161c57ada5bb2be1ca79 page allows users to view the source code, transactions, balances, and analytics for the contract address. Users can also interact and make transactions to the contract directly on Etherscan.
etherscan.io
'블록체인 > WEB3 개발' 카테고리의 다른 글
Hardhat으로 컨트랙트 개발 시작하기 (0) | 2024.05.16 |
---|---|
Klaytn IDE로 스마트 컨트랙트 배포하기 (0) | 2022.10.24 |
클레이튼 caver-js 지갑 연결하기 webpack error (1) | 2022.10.19 |
Try building your app with 'next build' before starting the production server. Next.js error (0) | 2022.09.12 |
리액트 부트스트랩 버튼 클릭시 사이트 전체 reloading, refreshing 되는거 막는 법, e.preventDefault() (0) | 2022.08.30 |
댓글