Reputation NFT Based Voting Mechanism
Snapshot is a tool for projects to create spaces where they can conduct off-chain voting on proposals. In Snapshot, any project can apply Orange's reputation NFT based voting mechanism as the space voting strategy to democratize the voting process. Snapshot users who want to vote on a proposal using this mechanism need to claim reputation NFTs on Orange to demonstrate their voting power.
Orange supports users to generate reputation proofs in the form of verifiable credentials (VCs) and NFTs. VCs are created based on the user selected dataset and model pair, containing a reputation score. Users with scores higher than respective thresholds can claim NFTs, so their reputation can be used in more scenarios.
For example, the NFT Collector is generated using datasets and model aiming to evaluate active NFT users based on their asset holdings and related actions:
- Timestamp of the user’s first NFT transaction
- Number of transactions on OpenSea within 180 days
- Types of ERC721 & BEP721 NFTs owned
- Value of ERC721 & BEP721 NFTs owned
However, these models are for general purposes. Snapshot space owners are recommended to provide data and models to Orange and issue custom NFTs, so the accordingly generated reputation results are more tailored to their needs.
Before claiming an NFT, users first generate a VC using the associated model and dataset. The API endpoints used to fetch datasets and models are saved in the Orange system. Upon receiving a request of generating a VC, the system first invokes the model by sending a request to the model API. Next, the MP retrieves datasets from dataset APIs to complete the calculation.
Now with a valid VC, users can claim an NFT. If the reputation score has been validated to have reached the required threshold, a mint transaction will be sent to the selected blockchain and the score will be stored as the NFT metadata.
When a user initiates the vote action, the Snapshot server will access the reputation score stored on-chain as the NFT metadata based on the user's wallet address. This score will then be used for calculating the voting result, and be listed in the vote details.