SoulFund is a SoulBound token purse for distributing funds after a vesting period, as well as unlocking funds using merit tokens cross-chain (axelar). A jury system was developed during the hackathon to act as a board of trustees to make decisions and handle disputes.
Disclaimer: The initial "SoulFund" contract was developed during ETHToronto. The submission for EthSanFran focuses on the jury system, the subgraph, the SoulFund factory, and a refactored UI that is being developed to allow the project more accessibility. Chainlink Price Feed aggregators for the token renderer have been refactored to use Empiric.
#SoulFund SoulFund is a SoulBound token purse for distributing funds after a vesting period, as well as unlocking funds using merit tokens cross-chain (Axelar). A jury system was developed during the hackathon to act as a board of trustees to make decisions and handle disputes.
##SoulFund Factory SoulFund Factory allows deployments of SoulFund ERC721 soulbound NFT collections from a granter, who can issue SoulFund tokens to beneficiaries and load them with up to 5 crypto currencies, native or ERC20 (limited for hackathon development) which will dispurse over a vested period. Further, certain merit tokens can be issued to allow for releasing a portion of the funds early. This utilizes Axelar which allows certain merit NFTs on any chain to be able to be used.
New to this hackathon is the SoulFund factory, refactors to allow for a smaller bytesize, the SoulFund dynamic subgraph, and most importantly the Jury system which acts as a board of trustees to help resolve disputes beneficiaries may bring up (ie. I lost my wallet which the SoulFund token is bound to).
##The Jury System The Jury contract is built in an abstract way to allow for any project to utilize it. Using the jury factory, a jury contract can be deployed with a predetermined list of jurors. Juries are selected randomly and will handle any cases that are brought up within their active duty. a dispute is only resolved once the dispute period reaches it's completion, and jurors have publicly viewable reputation through the subgraph in the case a juror needs to be removed for inactivity. A > 50% decision must be reached for a function to be executed in the contract which the Jury contract is assigned to.
Active jury members are alerted through Push protocol when they have been selected to active duty, as well as when a new case is proposed. Any active jury member can review a proposal and vote to activate it. This is in place to prevent troll disputes to get through to a deliberation.
This project utilizes many of the sponsors of the event, as well as some external systems.
Polygon - the main SoulFund contract and jury system utilizes mumbai testnet The Graph - we make heavy use of subgraphs using templates to track new SoulFund contracts deployed through the factory and new Jurys deployed through the Jury factory. Push Protocol - Utilizing push protocol allows for notifications of jury members when new cases present themselves, as well as when they are selected for jury. Emperic - We utilized Emperic price spot feed to build our on-chain SVG Tenderly - Tenderly was used to debug transactions