Building an NFT Mint Recommendation Model (Zora)
We've studied a basic contract recommendation model with eigentrust (openrank) before, let's build a more product specific model now.
Learn about OpenRank and the eigentrust algorithm, and check out the example python notebook (with input graphs from dune queries)
🏆 We have a competition to create the best graph datasets ending next Sunday (August 18th). Join the discord if you have questions.
Eigentrust: Hubs and Authorities (HNA)
Make sure to read the original eigentrust overview to understand the algorithm. To review, there are two main inputs:
localtrust: this is your measurement of interactions between two nodes, as node “i” signals some value to node “j”. This could be a token transfer, attestation, vote reply/like, etc.
pretrust: this is your "seed" selection of nodes who you think should be more trusted in the network.
Now, this works if all of your nodes are homogenous (i.e. all the same type). But many interaction graphs in crypto are not just wallet to wallet, they often include a mix of different contract interactions instead.
To capture this nuance, we create an interaction graph of node type 1 to node type 2, i.e. a wallet interaction with an NFT (mint/trade). We then take the matrix dot product of this graph and it’s transpose, essentially creating a relationship between all minters of the same NFT(s) - think of it like a Wallet to NFT to Wallet matrix. This end matrix is our new localtrust! We refer to it as a “round trip” in our examples. It’s still the same eigentrust algorithm used from here on out.
Pretrust methodologies stay the same, the notebook shows off many different “variants” for selecting a pretrust seed.
You can find the step by step calculation and model creation in this jupyter notebook. This contains a toy example not covered in the video.
A video walkthrough of the zora NFT recommendation feed can be found below: