nft_token_table

테이블 개요

NFT에 대한 상세정보 테이블입니다. 토큰 및 컬렉션 아이디, 토큰 이름 등의 기본적인 정보부터 image, attribute 등 tokenURI를 통해 가져온 metadata를 파싱한 컬럼들까지, '대체불가능한' 각 토큰의 주요 특징을 담고 있습니다.

컬럼 정의

컬럼명설명

network collection_id token_id nft_type

토큰의 주요정보입니다. network = [ethereum, klaytn, polygon, bnb]

nft_name external_url image_url s3_image_url token_uri

token_info의 key를 파싱하여 가져옵니다.
 ex) token_info = {name: “ABC”, tags: “ABC” …}

block_number

해당 NFT에 대한 정보가 수집된 블럭의 번호를 의미합니다.

minted_time

해당 NFT가 발행(민트)된 시간을 의미합니다.

token_uri

토큰 URI를 의미합니다.

ipfs

탈중앙화 여부를 의미합니다.

token_info

해당 NFT의 metadata를 의미합니다.

minted_time

대부분의 토큰 민트 트랜잭션은 from 주소가 null address인 특징을 갖고 있습니다(민트함수를 새로 정의했거나, 인터널트랜잭션을 사용한 경우 등 예외있음). 크롤러는 민트 트랜잭션을 가려내 해당 트랜잭션이 발생한 시간을 'minted_time' 컬럼에 insert하고 있습니다.

token_uri

NFT는 tokenURI를 반환하는 메소드를 포함합니다. 기본적으로 tokenURI()를 호출하여 가져올 수 있습니다. *ERC721/1155 표준이므로 항상 있는것은 아닙니다. *721은 tokenURI(), 1155는 uri()로 정의합니다.

ipfs

ipfs(탈중앙화 저장소) 여부를 체크합니다. 아래와 같은 절차를 따릅니다. tokenURI 확인 > 메타데이터 image_url 확인 > tokenURI 및 image_url 주소에 ipfs를 포함하는지 확인 *최근 'arweave'를 이용하는 경우도 많아졌기에, 로직에 추가했습니다.

token_info

tokenURI는 정해진 규격이 없기 때문에 토큰마다 제각각 다른 형식으로 보입니다. 예를 들면 https://와 같은 프로토콜을 생략하는 경우가 있는데, 이런 경우 tokenURI에 접근할 수 없어 token_info 즉, metadata를 가져올 수 없습니다. 크롤러는 이러한 상황에서도 정상적으로 token_info를 받을 수 있게 설계되어 있습니다. metadata(token_info)는 기본적으로 json 형식을 지켜야 하기때문에 크롤러는 해당 부분을 철저하게 검증합니다.

Last updated