Bounties:
NFTs have seen an explosion of popularity in the last year. Countless companies/projects such as Showtime, Superrare, have popped up to support discovery and initial sale of new NFTs, along with marketplaces like OpenSea to facilitate trading. Some projects even support taking out NFT-backed loans (ex. NFTfi).
Unfortunately, there is no platform for accurate pricing information of these NFTs. While some NFTs have their own site (ex. CryptoPunks) that allows holders to place sell orders, there is no information on assets that currently don't have open orders, or for assets that are changing hands outside of these large platforms.
If you're familiar with virtual video game items, you may know of sites such as backpack.tf (for Steam items) that allow the community to collectively speculate, vote, and decide on the pricing of certain items based on past trades, market dynamics, cultural changes.
Accurate pricing information opens up a ton of possiblities - it adds predictability to NFT-backed loans, allows for more efficient items-to-items trading, and is a source of information for those who are in the market for NFTs that may not be actively traded.
The most major issue we overcame was interacting with the MolochDAO contract. We wanted to reward price suggesters whose proposals were accepted with our community token $NFTR - and to do so, we had to make our own Minion and MinionFactory for MolochDAO. In doing so, we had a lot of challenges with calling external contracts and getting the functions to work through ethers.js. The Minion template provided by DAOHaus currently calls an external contract with raw hex data - however that does not let errors boil up to the contract - so our transactions were failing for over 5 hours with not enough information about the error. After trying a lot of different things, we decided to not go with the template, and created our own Minion contract, which did not use raw hex data to call our PriceTracker contract. This allowed us to provide the ABI of the PriceTracker contract and call it deterministically so that errors could boil up, and then we were able to fix our code.
We also could not find an API that consolidates different NFT’s across major projects like CryptoPunks, CryptoKitties, Decentraland, etc. Therefore, we had to use a hardcoded JSON list of CryptoPunks we were able to find online - and did some reverse engineering on LarvaLabs cryptopunks website, to get our platform to support CryptoPunks for price tracking. In the future, we hope to expand to other communities of NFT’s as well.
We wanted to reserve
nftearoom.crypto
through Unstoppable domains for the project - but Ethereum gas fees were way too high at the moment (over $100) for us to justify claiming that domain for the project at this stage. So we had to end up going with the Rinkeby testnet version of the randomly generated domain that Unstoppable domains generously provides for free. (Also, thank you for the $40 store credit 😍)Discussion