This is the world-first integration of SuperFluid's scalable payments to groups, with the UMA Optimistic Oracle, to automatically pay out Squads that achieve their assigned Goals! It's based on the proposed "Perpetual Conditional Reward" spec from the UMA and SuperFluid teams (who have been a great help), wherein payouts are made to a group of people on regular intervals PROVIDED that the Oracle confirms that a KPI has been met/maintained. I've wrapped it up as: SquadGoals: 1) Join a Squad, 2) Complete Goals, 3) Receive rewards! What can it be used for? a) Funding public goods e.g. sending a bonus to an Open Source project's dev team if they ship software releases each month! b) Incentivising your product's social media Squad to get your product's twitter followers up by 5% weekly! c) Cajoling 100 community members to share your product's Medium post, because if it reaches 1000 retweets then they'll all share in a SQUAD GOAL! SquadGoals can be used to fund all types of public goods. The need emphasised in the demo is: rewarding contributors to an open source project when new releases are made. - Once the dev team is registered in the SquadGoals dashboard as recipients of the reward, they receive a token entitling them to their share of the reward when the goal is complete. (Squad members don't have to do anything else to receive the payment, it'll come automatically to their wallet!). - When the achievement of a new software release is met, someone in the Squad triggers the smart contract to claim that the reward is distributed to the Squad. The contract then uses the UMA Optimistic Oracle to quickly verify their success, on-chain. If it's not disputed, their payment gets paid out! - Squad members can trade or donate their reward entitlement token, e.g. forward their payment for FOSS contributions to charity!

SquadGoals showcase

How it's made

The core components are the SuperFluid Instant Distribution Agreement (allowing for reward distribution to many recipients with a single transaction) and the UMA Optimistic Oracle (allowing for fast, verifiable queries through the blockchain). The principal smart contract is: 1) an ERC20 token that is distributed to Squad members, and overrides the _transfer() method to update the IDA recipients when token ownership is transferred, and 2) implemented the UMA OptimisticRequester interface to receive callbacks when the request to the oracle is settled. This is the first time these two products have been fused, and while main technical challenge as a first-time smart contract developer were in unifying the tech stacks of the products (truffle vs hardhat, different supported testnets, building the stack locally was required), the support provided by the two sponsors made it possible for a first-time ethereum (solo) hacker to get a DApp deployed!