All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog (github)
- Farcaster names and pfps in the app
- A status dialog for the bet creation flow
- USDC balance and allowance check in bet creation to make the flow significantly more seamless
- Small UI tweaks to improve mobile experience and signing transactions
- Several breaking bot bugs; Repaired and re-deployed
- Major feature: Web app for more reliable performance & feature iteration
- Form for creating new bets
- Explore bets you are a party in
- Explore all recent bets
- Accept/decline/retrieve funds/settle bets in app
- Major feature: Ponder indexer
- Add contract fees and ownership
- Rename "arbitrator" to "judge"
- Use ReentrancyGuard and SafeERC20 libraries to improve contract security and flexibility
- Improve frame usability
- Bot casting and webhook logic
- Improve frame usability
- Smart contract: change some var names to improve naming consistency
- Smart contract: change event topics to make it easy to find the new bet contracts
- Frame transactions work now
- Prep frame to deploy (e.g. set env vars correctly, clean up code, and other small fixes)
- Status enum & getStatus function
- Function for getting all bet details at once, 'getBetDetails'
- Custom errors for gas efficiency
- Bet id state to each contract
- Immutable contract vars changed from public to private for gas efficiency and simplicity; data can be fetched from 'getBetDetails' function
- 'require' statements changed to 'if / revert' for gas efficiency
- 'isOfferExpired' changed to 'isExpired'
- Status boolean variables & return functions (i.e. 'accepted', 'settled', and 'isBetActive'); replaced with one 'getStatus' function
- Bet homepage
- Frame transactions for creating, accepting, declining, and settling a bet
- Frame transaction for authorizing a transfer of tokens to the bet contract
- Frame transaction for recovering your funds if a bet offer expires
- Bet expiration contract logic
- Function for retrieving funds if the bet expires
- Function for checking if the bet is currently active
- Custom error for when attempting to run a function where you aren't the designated party
- BetFactory state now has 3 main functions: one for getting contract addresses, one for getting a bet id from a contract address, and one for getting all bets related to a specific user
- Improve readability of some function requirements
- Redundant state in BetFactory (i.e. bet creator, participant, amount, etc.)
- Created a frame that...
- takes essential user input required for creating a new bet
- validates that input
- allows users to authorize the bet factory contract to transfer the bet amount
- Readme, license, and changelog
- Created
BetFactory.sol
... key features:- can read all bets based on chronological creation or based on user address'
- can create new instances of
Bet.sol
- Created
Bet.sol
... key features:- can read all relevant details of the bet, including the bet creator, participant, arbitrator, bet amount, attached message stating the bet terms, whether it has been accepted or settled yet, and if there is a winner, who it is
- can accept or decline a bet as the bet participant
- can settle a bet, selecting a winner or tie, as the bet arbitrator