--- tags: v3 --- # v3 Haus Keeping 🧹 (Tuesday) **March 1, 2022** ## Other Notes - [Bau's notes](https://hackmd.io/Q0HiDcCzQpSBqbDPUti4Rg?view) - [adrienne's notes](https://hackmd.io/1JkDRWJBTJCmGRF5jLR07g?view) - [Bill W's notes](https://hackmd.io/P-9UItTiQgu5-7dm0x2_fw) Understanding and prioritizing work to be done around the Haus. - [Baal.sol](https://github.com/Moloch-Mystics/Baal/blob/main/contracts/Baal.sol) - [feat/baalZodiac](https://github.com/Moloch-Mystics/Baal/blob/feat/baalZodiac/contracts/Baal.sol) branch What branch should we be aligned on? ## Potential Topics - v3.1 Contract review - Events, interfaces - Run throught subgraph - Jam on factory and summoner ## Differences - v2 was very explicit - v3 is more flexible and uses multi-call - Tricky to recognize patterns with multiple actions - v2 had very complex subgraphs with states of escrow, treasury and internal balances in multiple locations - **Big change**: All assets (funds, NFTs, etc) are stored in a safe rather than the contract ## Today's Goal - Overview of events interface - Consdier how to model data for front-end ## Background - Smart contracts stored on blockchain - Record of state - Functions change the state and update the blockchain - Expensive to store all information on-chain - The Graph is like a database - Subgraphs used to index events - Query the subgraphs with API calls ## `avatar` - No internal balances or withdraw functions - No escrow ## Rolls - New :bulb: - Need to explore deeper ## Security - How do we enforce schemas? (library that checks format) - How do we validate data? (trust) - Can we ensure data from our libraries is secure - Centralized server with crypto signed Lambdas - Need for proposal auditing by admins - Can we show something is verified in the app? - Can we show warnings in the app? - Issuing keys to trusted apps - :bulb: Using Block Native API to validate at end (simulation) - Curation ## Standard Proposal Suite - What base proposals should be included by default? - How do shamans change what is standard? ## Propsals - Anyone can submit - Does not have to be DAO member ## Sponsor Proposal - Can be self-sponsored - DAO sets threshold required to sponsor - Automatically sponsored if sumbmitter > threshold - What role does the sponsor play in verifiying and validating and what information do they need to see prior to sponsoring? ## Voting Period - Specific to proposal - Can be set by DAO ## Proposal Expiration - Defined by user when submitted - Must be > (voting + grace) - Cannot process proposal after expiration date ## `cancelProposal` - Prior to voting period starting ## Process Order - Just an index `id` - Must be processed in order like v2 ## `submitVoteWithSig` - Gasless Voting - Similar to Compound - Off-chain signature turned into meta transaction ## `ProcessProposal` - Is a redundancy ## `getPriorVotes` - Takes a snapshot at time voting starts - Records current state of voting power - Should UI show voting power specific to a proposal? ## Delegation - Cannot delegate partial shares (only full voting rights) - Delegate must have at least 1 share in the DAO - Delegating shares requires two events - Old delegate and new delegate - New delegate: old voting weight, new voting weight - New shares added automatically get delegated - `DelegateChanged` - `DelegateVotesChanged` when delegate changes vote - How are delegated shares handled with ragequit? (burns shares) ## Feed - What is core v. boost? - How do we make the feed valuable? - Should feed be actionable? - How do we show large events in DAO (shamans, delegation)? - Do we need a more general feed for DAO events? ## Notifications - How do we handle member messaging? - How are members notified when they get delegated? - :bulb: Red alert button to notify everyone when needing action - Not great Web3 solution - Allow opt-in - Could be boost ## Ragequit - Ragequit is basically the same - Can now ragequit while yes vote is active - Tokens that are not whitelisted are ragequitablle with the `advancedRagequit` function ## Treasury - Is a safe in 3.1 - Zodiac safes are like bank accounts - Modules are added on top to control the safe - Single `avatar` is ragequittable - Does not prevent Baal from being used by another DAO like safe minion - Can multiple DAOs control the same treasury? - Where is the storage variable where safe is defined? ## Safe Minion - Does `Baal.sol` support launching minons? - How quickly can we write safe minion to still work as normal? - How do we show safes that have been added by another DAO? ## Middleware Contract - Not required for non-ragequitable vaults - For seperate vaults that modify how proposals work - Early execute - Quadratic voting - Other examples ## Summoning - Summon without `avatar` - Does `SetupComplete` pass in `avatar`? - Explore `SetupComplete` in factory discussion ## ToDo - [ ] Contact Tae Re: Quantstamp audit pipeline - [ ] Fork `Baal.sol` (who and wen) - [ ] Make required contract updates prior to audit