#12 NFT analysis
Last updated
Last updated
ERC721 is one of the most used NFT(Non-Fungable Token) standards. compared to follow ERC20 standard in terms of fungable tokens, Traditionally, the most typical characteristics of NFT are that each token is indivisible, irreplaceable, and unique. The common uses of NFT are:
Digital art/collections
In-game items
Domain names
Tickets or coupons that allow you to attend an event
Digital identity
Articles
For example, in digital art, different NFTS have different styles; for instance, in the ENS domain name, each domain name is unique and cannot be repeated. As for tickets, each ticket has a fixed seat, and different seats are also different numbers.
With the development of NFT, other standard NFT have been derived:
ERC-1155: Non-fungible tokens, each token is different, but can do quantity transfer
SBT: Non-transferable Token
ERC-3235: Semi-fungible token, each token is different, and supports settlement
ERC20 | ERC721 | ERC1155 | ERC3535 | |
---|---|---|---|---|
The contracts related to NFT are usually divided into two categories: one is the contract of the project party and the other is the contract of the third-party exchange platform used to trade NFT.
We use ERC721 NFT as an example to show the characteristics of an NFT contract, the other can according to demand to understand, we in the market of NFT Opensea to azuki on the NFT, for example, that contract contain what events:
For data analysis, the most important function is the Transfer event, which is triggered on every transaction and recorded on the chain. In addition to Transfer, there is also the Mint event, which is usually used to mint a new NFT at the time of sale. Dune's spells table provides ERC721
, ERC1155
Transfer
tables such as erc721_ethereum.evt_Transfer
, erc1155_ethereum.evt_Transfer
, etc. (different names under different blockchains), so we can query NFT transfer events for a contract or an EOA address.
In the Transfer event, there are three main parameters: the sender address from
, the receiver address to
and the number of the NFT tokenId
. In the case of transaction, both from and to are a normal address. If mint
, the from address is all 0, and if burn
, the address of to is all 0. The nft.mint
and nft.burn
tables on Dune also decode this event to get the final transaction information.
Some common marketplace contracts are Opensea, X2Y2, Blur, etc. Let's take Opensea Seaport1.1 contract as an example. All functions related to a transaction will trigger the OrderFulfilled event to record the data on the chain. Dune's nft.trades parses this event to get the final trades. The seaport contract writable functions are as follows:
For example, Alice made an order for an Azuki NFT with the number 3638at 10ETH, then it triggers the 'fulfillBasicOrder' function, and when the transaction succeeds, it triggers the 'OrderFulfilled' event to be logged to the chain.Etherscan link anddune link.
Original base table: located in Raw
-->transactions
and logs
tables;
Specific project table: located in Decoded Projects->Search
, enter the name of the specific project table and the name of the trading platform;
Aggregate table:
Spells-->erc721: record all transfers
of erc721
Spells-->nft: this contains information about trades, mints, transfers, fees, and burns; the most important of these is the trades table, which aggregates all of the trade data from the major exchanges.
The important details of nft.trades table are as follows:
In general, an NFT project will focus on the following basic metrics:
Transaction price movement
It is necessary to query the transaction amount of all the trading markets and express all the transactions with a scatter plot. At the same time, different ranges can be selected through the time range, such as the last 24h, the last 7 days, the last 1 month, and so on. It should be noted that for some transactions, the transaction price is too high, you need to filter out these, otherwise you will not be able to clearly show most of the transaction price movement.
Reference Links: https://dune.com/queries/1660237
Floor price
Because we can only obtain the data of completed transactions on the chain and cannot obtain the data of pending orders in the trading market, we generally use the minimum transaction amount among the last 10 transactions as the floor price, which is not much different from the pending order price, unless the project is particularly unpopular
Reference Links: https://dune.com/queries/1660139
Transaction volume, total transaction quota, total number of transactions, etc., 24 hours /7 days /1 month transaction quota
Reference Links: https://dune.com/queries/1660292
Daily/monthly/weekly volume
Reference Links: https://dune.com/queries/1664420
Current number of holders, total number of tokens, distribution of holders, etc
Reference Links: https://dune.com/queries/1300500/2228120
We made a dashboard where you can enter the address of an NFT contract and see all kinds of information about the project. You can learn more about queries using the query on the dashboard:
https://dune.com/sixdegree/nft-collections-metrics-custom-dashboard
https://mirror.xyz/0x07599B7E947A4F6240F826F41768F76149F490D5/CHcwsp_d0AINEalFq_0FcqkLeEyeeGpYDDtw82TyMes
https://github.com/cryptochou/seaport-analysis
https://dune.com/sixdegree/soulda-nft-soulda16club
https://dune.com/sixdegree/digidaigaku-nft-by-limit-break
Sixdegree
is a professional onchain data analysis team Our mission is to provide users with accurate onchain data charts, analysis, and insights. We are committed to popularizing onchain data analysis. By building a community and writing tutorials, among other initiatives, we train onchain data analysts, output valuable analysis content, promote the community to build the data layer of the blockchain, and cultivate talents for the broad future of blockchain data applications. Welcome to the community exchange!
Website: sixdegree.xyz
Email: contact@sixdegree.xyz
Twitter: twitter.com/SixdegreeLab
Dune: dune.com/sixdegree
Github: https://github.com/SixdegreeLab
Field | Description |
---|---|
features
fungible tokens(each single token is same as others)
non-fungible tokens(each single token is unique, no one is same as others)
representing fungible, semi-fungible, and non-fungible tokens.
Semi-Fungible Token
esamples
address A transfer 100ETH to address B
address A transfer an laser eye BAYC to address.(not glassed or others)
address A transfer 5 bottles of potion in a game. Not other equipment. each of the 5 bottles of potion is same. but we can +/- 5 bottles.
A DeFi protocol gives user A a $100 1-year bond, numbered 001. The bond can be split into 2 $50 bonds, numbered 002 and 003, which user A then transfers to holders B and C. The bond can be split into 2 $50 bonds, numbered 002 and 003. The 003 bond can in turn be split into another $20 for the 003 bond, at which point 002 is worth $30 and 003 is worth $70.
scenario
cryptocurrency
Digital Collections
In-Game Assets
Financial Assets/Contracts
blockchain
Most of chain of data gathered in this table
project
Trading platform name
version
Trading platform version
block_time
Block time
token_id
NFT Token ID
collection
NFT collection name
amount_usd
The dollar value when trading
token_standard
The standards of the Token
trade_type
Transaction type, it is single NFT deal or multiple NFTs trade
number_of_items
Number of the NFT traded
trade_category
Transaction type (Direct buy, auction, etc...)
evt_type
Evt type (Trade, Mint, Burn)
seller
Seller wallet address
buyer
Buyer wallet address
amount_original
The original amount of transactions (under the original units of tokens token)
amount_raw
The raw transaction amount without being numeric
currency_symbol
The token symbol of the transaction (what token is used as the unit of payment)
currency_contract
The token contract address of the original transaction, use WETH on ETH contract address
nft_contract_address
NFT contract address
project_contract_address
Trading platform contract address
aggregator_name
Aggregation platform name, if the transaction is initiated from the aggregation platform, such as gem
aggregator_address
Aggregate platform contract address
tx_hash
Transaction hash
block_number
Block of transaction
tx_from
The address from which the transaction is initiated, usually the buyer
tx_to
The address to which the transaction is to be received, usually the trading platform
unique_trade_id
Transaction id