# verified delegates THe DAO can verify the personhood and reputation of a potential delegate through proposal. Could be combined with a onboarding flow where users have a option of delegating to a verified delegate after staking for shares this would be an onchain version of similar onboarding flows for tokens with delegation support. ex GTC, ENS, SAFE example DAO: - New DAO starts with a delegate seeding period. - Summoners and initial Members begin with a small number of shares and quick proposal turnover - nominations?? make a signal proposal to become 'verified' - if this proposal passes they are added to a list of verified delegates for the DAO - this list can grow as new members wish to be verified. - the list of verified delegates can be viewed by share holders so they can easily transfer their delegation to a verified member - DAO turns on easy stake onboarder and increase vote/grace to something more reasonable ## bolton app three main actions - Easy Stake Onboarder - onboarder shaman - considerations: expiery, share max (upper limits?) - can we approve max? - Form to request to be a verified delegate or nominate - proposal - details "this account is signalling to be vouges for as verified by the dao or whatever" - title "Verified delegate" - type verfiedDelegate - signal with poster.sol schema - platform - whys - date stamped - can it be submitted by others (ops team, member nominations) - can it be edited or deleted? - List of verified delegates that members can chose to update delegation to - query poster data - change delegate action for user/sender **Easy Stake wires** ![](https://i.imgur.com/zT8A5jX.png) **Application form** ![](https://i.imgur.com/bFIckHB.png) **Delegate list** ![](https://i.imgur.com/iBoPCdF.png) ## Implementation Notes ### Proposal action 1. post verified delegate data contract: poster action: Post args: - tag: 'daohaus.proposal.verifiedDelegate' - content: *see json schema below* ```js { daoId: '0x0', table: 'credential', queryType: 'list', recipientAddress: '0x0', credentialIdentifier: 'verifiedDelegate', title: 'Verified Public Haus Delegate':\, description: 'good at being a delegate', link: 'billyboy.com', credentialType: 'verifiedDelegate' } ``` We could support the dao seeding a bigger list of delegates with a multiaction call ### Subgraph #### mapping Support these queries: - all verified delegates for a dao - `Records(where: { dao: '0x0', table: 'credential', credentialIdentifier: 'verifiedDelegate' })` - all daos an aadress is a verfieid delegate for - something like: `Records(where: {table: 'credential', credentialIdentifier: 'verifiedDelegate', content_contains_nocase: 'recipientAddress: "0x0"})` Details - new dao database parsing to create a Record entitiy - tag and dao proposal validation - table: 'credential' - contentType: json - TODO: - add a queryType field - could be 'latest' = query for newest version of the data ex.) daoProfile - could be 'list' = query all to construct list ex.) these verified delegates - new tag types: daohaus.proposal.database & daohaus.member.database - table field is now filled in with data from schema - if no dao, tbale, query type fields it's not valid - adjust current tags/types as necessary - how to add a new schema - pr so other know how to parse and validate ```gql type Record @entity { id: ID! createdAt: BigInt! createdBy: Bytes! dao: Dao! tag: Bytes! table: String! contentType: String! content: String! queryType: String! } ``` #### poster json schema https://github.com/HausDAO/monorepo/tree/develop/libs/moloch-v3-data/src/subgraph/json-schemas ```json { "$schema": "http://json-schema.org/schema#", "$id": "https://raw.githubusercontent.com/HausDAO/daohaus-monorepo/develop/libs/moloch-v3-data/src/subgraph/json-schema/dao-profile.json", "title": "Credential", "description": "Any credential verified by a DAO proposal", "type": "object", "properties": { "daoId": { "description": "The unique identifier and contract address for a DAO", "type": "string", "pattern": "^0x[a-fA-F0-9]{40}$" }, "table": { "description": "Table field on the Record entity indexed in the DAOhaus subgraph", "type": "string", "enum": ["credential"] }, "queryType": { "description": "Indicates if the Record entities indexed in the DAOhaus subgraph should be queried for latest or as a list", "type": "string", "enum": ["list"] }, "recipientAddress": { "description": "Address of the verified credential recipient", "type": "string", "pattern": "^0x[a-fA-F0-9]{40}$" }, "credentialIdentifier": { "description": "Unique identifier of credential type", "type": "string" }, "title": { "description": "Name of the credential", "type": "string" }, "description": { "description": "Short description of the credential", "type": "string" }, "longDescription": { "description": "Longer text description of the credential with details related to the proposed recipient", "type": "string" }, "link": { "description": "Link to more content related to the credential and recipient", "properties": { "callbackUrl": { "$ref": "#/definitions/saneUrl" } } } }, "required": [ "daoId", "recipientAddress", "credentialIdentifier", "table", "queryType" ], "definitions": { "saneUrl": { "format": "uri", "pattern": "^https?://" } } } ```