Oracle
Last updated
Last updated
NFTCall V1 uses NFT floor prices as strike price reference, and also needs volatility to price options.
Therefore, upholding the efficiency of the platform requires a secure decentralized oracle solution to accurately price the NFTs. However, due to their unique non-fungibility, the nature of NFT liquidity (or often lack thereof) is different from fungible ERC20 tokens, so additional consideration was required.
Due to the high cost of some existing oracle infrastructures such as Chainlink, we decided to build our own oracle. And we keep the floor prices and volatility trustworthy and secure with following strategies:
Collecting data from multiple NFT marketplaces (Opensea, LooksRare, X2Y2).
Removing extreme outliers such as 0 or error data.
Removing possible outliers by calculating a reasonable range based on the standard deviation.
Calculating the average of the filtered data and submit it to the oracle contract.
All NFT price data is sourced from multiple NFT marketplace by directly monitoring their floor price APIs. The price data will be updated every 2 hours, but when the off-chain floor price data moves more than deviation threshold, an update will be triggered immediately to write a new price into our oracle smart contract.
We have integrated the following NFT marketplaces into our data sources:
Marketplace | Regular Update Period | Trigger Deviation Threshold |
---|---|---|
For CryptoPunks, we directly track the floor price from CryptoPunksMarket contract.
First we collect data from some of the most trustworthy NFT marketplaces (Opensea, LooksRare, X2Y2). And we monitor the price changes from their official NFT floor price API.
To ensure the NFT marketplace data is correct, Zero or other error data will be removed from the calculation.
Next, we remove prices that falls outside the reasonable range. We assume the prices from different marketplaces conform to the normal distribution during a particular time period, which means they should not have wide swings at a checkpoint, so the range is calculated using the standard deviation. Prices that falls outside 1.5X standard deviation will be considered as outliers and removed from the calculation.
Then, we calculate the arithmetic mean of the filtered data and submit it to the oracle contract.
Since Benddao, the largest NFT liquidity market so far, also holds a similar and reliable floor price oracle for blue-chip NFT, we quote floor price data from their oracle first, but we also run a fallback oracle updated by ourself, providing volatility data and fallback floor prices.
Contract | Address | Description |
---|---|---|
Contract | Address | Description |
---|---|---|
2 hours
3%
2 hours
3%
2 hours
3%
MainOracle
Quote floor price data from Benddao Oracle.
FallbackOracle
A fallback oracle updated by ourself providing volatility data and fallback floor prices.
MainOracle
Quote floor price data from Benddao Testnet Oracle.
FallbackOracle
A fallback oracle updated by ourself providing volatility data and fallback floor prices.