nft_transaction_table

테이블 개요

NFT의 전송, 거래 이력에 대한 정보가 저장되는 테이블입니다. 또한 특정 트랜잭션이 sales(거래)을 했는지, 단순 전송(transfer)만을 했는지 구분할 수 있습니다.

컬럼 정의

컬럼명설명

network

크롤러가 지원하는 4개의 메인넷을 의미합니다. [ethereum, klaytn, polygon, bnb]

collection_id

전송, 거래된 NFT의 collection id를 의미합니다.

token_id

전송, 거래된 NFT의 id를 의미합니다.

transaction_type

트랜잭션이 단순 전송인지, 마켓을 통한 거래인지 구분합니다.

transaction_hash

해당 NFT가 전송, 거래 됐을 때의 transaction hash값을 의미합니다.

timestamp

전송, 거래 transaction이 발생한 시간을 의미합니다.

block_number

NFT가 전송, 거래된 transaction_hash가 존재하는 block의 번호를 의미합니다.

log_id

전송, 거래 이벤트가 발생한 log의 인덱스를 의미합니다.

currency_symbol, price, currency, decimals

NFT 거래에 이용된 통화에 대한 정보입니다.

market

해당 NFT가 거래된 market을 의미합니다.

amount

전송된 NFT의 수량을 의미합니다.

from

NFT를 판매하거나 보낸 계정의 주소를 의미합니다.

to

NFT를 구매하거나 받은 계정의 주소를 의미합니다.

sales_info

거래가 이루어진 NFT의 정보입니다.

주요 로직

크롤러는 ERC721의 전송을 수행하는 'transferFrom', 'safeTransferFrom'과 ERC1155의 전송을 수행하는 'safeTransferFrom'(Single), 'safeBatchTransferFrom' 모두 감지합니다. 감지된 트랜잭션 및 해당 로그를 구문분석하여 '누가 누구에게 무엇을 얼마나' 전송했는지 저장합니다.

NFT 마켓에서 거래가 이루어지면 마켓에서는 해당 거래의 트랜잭션을 생성/전송합니다. 이 기록이 블록체인에 정상적으로 쌓이게되면 거래가 완료됩니다. 크롤러는 이러한 트랜잭션의 데이터를 구문분석하여 '누가 누구에게 무엇을 무엇으로 얼마에 구매했는지'와 같은 정보를 가져옵니다. 'sale'하는 행위도 결국 블록체인 입장에서는 'transfer' 이벤트의 연속이기 때문에, 겉보기에는 비슷해보이는 수많은 거래 이벤트들을 놓치지 않고 정확히 구문분석 하는것이 핵심입니다.

transfer 이벤트와 sales 이벤트가 달라서 타입을 구분할 수 있습니다.(transaction의 logs에서 확인 가능합니다) 하지만 위에 설명처럼, sales 이벤트에도 transfer 이벤트는 따라붙습니다. '주문서'라고 볼 수 있는 sales 이벤트 뿐만 아니라, 같은 트랜잭션에 포함된 transfer까지 함께 구문분석해야 정확한 데이터를 수집할 수 있습니다.

대상 마켓

ethereum: opensea, X2Y2, LooksRare, Rarible, blur cypress: opensea, pala polygon: opensea bnb: opensea, binance market

Last updated