Soulbound tokens with provably stored metadata, powered by F(E)VM
Soulmates is a soulbound token (SBT) issuance engine, built on FEVM.
Soulmates includes a set of FEVM smart contracts (17 files; 11 test files, ~500 lines of Solidity code), a fully-featured and fully-functioning frontend dapp that can be used to create, assign, and claim SBTs including some using automatic Filecoin deal data, and several Figma demonstrations of use cases that can be built around SBTs.
Why SBTs? SBTs are an important on-chain primitive for many critical use cases. As a result, SBTs have become increasingly important in the conversation around decentralized identity and reputation, and are part of a fuller story which includes on-chain and off-chain credentials.
We wanted to build something that was useful and could credibly be deployed on FVM mainnet to provide real value day 1. Some of the use cases Soulmates can support include: lending protocols, DeFi solutions, storage provider reputation systems, education credentials, and more.
The project comprises 17 smart contracts, 11 test files, and a fully-functioning React app.
The underlying smart contract architecture includes:
(1) Soulbound token engine: Creates soulbound tokens (1a) Core: Entrypoint to interact with the full engine (1b) SBT: Modular soulbound ERC721 design deployed to FEVM (1c) SBTFactory: Modular factory generator, which enables you to create SBT collections which follow the rules you set up (1d) A few sample factories (OpenFactory, DealFactory, and DemeritFactory were the ones we set up to start with)
(2) Oracles: Hacky but necessary contracts to bring data into the system so that we could use it in the project (e.g. converting ETH to f4 to f0 addresses)
(3) Storage: Shared storage between all contracts (also a hack for the purpose of the hackathon)
The front-end application leverages: NFT.storage, the Soulmates smart contracts we wrote, wagmi.sh, the FEVM mock API, and other technologies.
We impressed ourselves with the architecture we developed for the hackathon, the scope of building both a full-featured app and the underlying contracts in a usable way, and actually completing the project on time. We also faced numerous technical challenges throughout the project, and had to quickly create efficient workarounds to address them (learned a lot from this and also can share with the FEVM team in case useful). We also worked very well together as a team. Overall, this was a great hackathon for us!