--- tags: Product --- # Metadata Spike ### Goal Implement a resuable solution for dapp metadata storage in Rabbithole and Daohaus. ### Deliverables - Document/plan to move metadata off airtable into a more decentralized solution - Data/system map - Inputs/outputs - List of other options for future exploration - connext/xdai/ipfs custom solution - filecoin? - others? - Ceramic/IDX code spike ### Initial questions - DID indexing - [DID provider](https://developers.ceramic.network/build/authentication/#did-provider-or-wallet) - Can we get a provider for the moloch/smart contracts? - ["multiple controllers is not currently supported FYI!"](https://discord.com/channels/682786569857662976/801537898826432542/808636056064360479) - would need to limit to one controller - would resemble [NFT DIDs](https://github.com/ceramicnetwork/CIP/blob/main/CIPs/CIP-94/CIP-94.md) - each member would be a controller of the DID. (need to update that controller list with share updates?) - minion/api function? oh yeah, better - Intgegration with current API? - I think the api might still serve some purpose - data update lockdown to dao members? - s3 dump of data collects/formats and makes it quick/easy for FE - Should we plan to host a ceramic node? - can be done outside this effort. probably worthwhile to contribute to the community if we can get some experience here ### Daohaus Now Dao meta - non-contract data related to a dao - https://daohaus-metadata.s3.amazonaws.com/daoMeta.json - INPUTS - created/edited by dao members - OUTPUT - hub/explore/dao ui - api hydrates with boost,allies data - Boost activations/meta - Boost 'table' - available boosts - boostKey - Activations 'table' - boost -> dao connection - active,metadata json,relatedBoost,relatedDao - INPUTS - boosts managed manually by admins - no UI in app - activations created/edited by dao members - OUTPUT - dao ui - Allies - Table to quickly manage both sides of ally relationship - parent,child,networks,allyType - INPUTS - created/edited by dao members - OUTPUT - dao ui - Ceramic solution 1) single daohaus user/controller on our server - we need to handle the key management serverside 2) server can check membership with the same mm signing method we use now 3) then this dh user/controller updates data 4) can also plug into the same api endpoints for serving data PRO: - progressive decentralization - multiple controllers on the ceramic roadmap - front end implementation is pretty seamless CONS: - all still serverside and loss of easy admin editing - lift is all in the api code - will need a set of admin functions - ie) hide daos User meta - likes for hub and other future preferences - INPUTS - created/edited by user - OUTPUT - dao ui - Ceramic solution - idx assign did to user address - auth flow for app to access data - requires a 2nd authentication - maybe only con here. will need FE adjustments to add this to usercontexts - read/write Notification data - richer boost data driving notification configuration - think about this later - also dao scoped and admin needs ### RabbitHole User meta (mostly soon, except social verification) - social verification - profile details - store cross-chain IDs - certifications ### nexts 1. data mapping - input/outputs - data model 2. tutorials/quick starts - read and write 3. surface questions ### Materials https://developers.idx.xyz/build/quick-start/ https://developers.ceramic.network/build/quick-start/ Demo at EthDenver '21 https://github.com/ceramicstudio/idx-assignment https://www.youtube.com/watch?v=-kT_jMGCVR4 example app tutorial - old https://blog.ceramic.network/how-to-build-a-simple-notes-app-with-idx/ Basic profile app https://ceramic-form.on.fleek.co/ Awesome Ceramic list https://github.com/ceramicnetwork/awesome Get DID for ETH Address https://github.com/ceramicstudio/idx-assignment/blob/master/src/app.ts#L31-L39 did resolver library https://github.com/ceramicnetwork/did-resolver dumb notes - temp registry - hold assets - associate a burner dao that we can send stuff too - mapping of address to hash Front end interacts with the connext relayer - that makes the xdai transaction - need to fund relayer Unknown - how to verify membership in the xdai contract for another network dao - relayer queries state? - or metamask signing like functionality - Admin functions? - - relayer functions to hide daos? - - con - state rent