---
# System prepended metadata

title: Metadata Spike
tags: [Product]

---

---
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