MGP: dHole, Ethereum community registry

Task:

The Abridged team is undertaking a project bounty from the MetaCartel, where it is building a TCR called ‘dHole’, with the aim of solving information discovery and coordination from within the Ethereum community. This proposal outlines a grant of $6,000 USD to help finance the work done by the Abridged team and launch the project as a pilot.

Unique experimental value proposition:

  • This will be the first TCR in history where the initial bonding curve liquidity and token distribution will be directed towards members of a DAO (MetaCartel DAO and if this proposal passes, Moloch DAO as well).

  • This will also become the first DAO joint venture between Moloch & MetaCartel.

Problem tldr;

It is really hard to find things in the Ethereum ecosystem.

It is extremely difficult to discover, become aware and to search for valuable information around Ethereum community projects, people and resources. This need has been signalled interally within the MetaCartel DAO and by the EF.

Some problem journeys include:

  • Recruiting
    • I need an audit for my project. I want to browse a list of smart contract auditors
    • I need a freelance designer to help re-design my landing page
  • Research & coordination
    • I am looking to explore L2 scaling solutions for my dapp, I want to see all the state channels implementation SDKs.
  • Ecosystem participation
    • I want to see all the DAOs out there in the ecosystem so that I can conduct research and perhaps join some of them.

Externalities of these problems include:

  • Unrealized opportunities for people and projects who aren’t discovered by the community as they don’t have a good network
  • Undiscovered work and often resulting in duplication efforts around solved problems

Solution tldr;

Create a universally shared ‘yellowpages’ registry for the Ethereum community that lists out every crypto project in the ecosystem. This project is known as ‘dHole’ = ‘duck hole’

“If we collaborate, we can line up all our ducks in a row.”

Scope of the proposal

  • The $6,000 USD will help the project…
    • Launch the full project as an initial pilot at ETHBoston
    • Fund 2 months of continuous community development and product iterations on the TCR project itself.

What makes this dHole TCR unique?

Community: Initial token distribution: Initial bootstrapping of the TCR bonding curve and token distribution will be initiated by MetaCartel DAO and potentially Moloch DAO. Going to be pushed by the MetaCartel community. There is meme firepower.

Implementation

  • A poll is entered into a queue when an ENS domain is submitted to the registry. The submission requires a user defined deposit amount of TCR tokens. Once a poll reaches the head of the queue, the poll opens. There can only be one poll open at a time. There are only two types of polls, adding an ENS entry to the registry or remove an ENS entry from the registry.
  • Voters submit their encrypted vote and the amount of tokens to stake. Once a vote closes, there is a reveal period where all voters need to reveal their vote. If a voter does not reveal their vote in during the reveal period, their voting stake is slashed and shared equally amongst winning voters. All losing voters also will have their losing stake slashed and shared amongst winning voters. Once the reveal period for a vote has concluded, anyone can call the process function to start the next poll.
  • The bonding curve will use code from https://gitlab.com/limelabs/continuous-organisation/tree/master/contracts/Math.

Smart Contract Overview

  • The TCR design consists of 3 smart contracts (no including additional imports for ERC20 support and libraries like SafeMath). The design principle is to allow for any Moloch DAO based contract to interact and launch a TCR with arbitrary members. The majority of the code will be written in Solidity expect for the bonding curve math which will be written in Vyper.
    • Registry.sol - The registry contract is a proxy used to facilitate the ragequitting and launch the TCR. Once the registry contract has started the TCR, it is no longer needed. Separating the registry from the TCR allows for future modularity so that other types of DAO “drivers” can be integrated using the same TCR design.
    • TCR.sol - The tcr contract manages the tcr and is the main contract that voters will interact with once started by the registry contract. Voting starts with a submission. Each submission is put into a queue and only one ballot can be processed at a time. A ballot consists of a voting period and a reveal period. During the voting period, voters vote by putting in a vote deposit and submitting an encrypted vote. Once the voting period has ended, there is a reveal period in which votes need to reveal their votes. Failure to reveal a vote results in the loss of the vote deposit. After the reveal period has ended, the poll needs to be processed. This marks the poll as complete and begins the voting period of the next ballot in the queue.
    • Voters on the losing side of a vote (less than majority) lose their voting deposit. Voters on the winning side of a vote get their voting deposit back and equally split, amongst the other winning members, the losing and non-revealed voting deposit.
  • Boostrap.sol
    • The bootstrap contract has the list of members that should be airdropped tcr tokens. If the list is exceptionally large, the registry contract can incrementally airdrop tcr tokens until the list has been exhausted.

Registry data

Each project is an object that is then added to the registry has the following fields…

  • Project name
  • Project logo
  • Project website link
  • Project twitter link
  • Arbitrary metadata (containing details and tags that enables the dapp to sort and filter projects on the registry by categories and other tags)

User experience

  • Craigslist-like user experience, simple and minimal

  • Simple information architecture
    • (Page 1) Homepage:
      • Lists all the items in the registry
      • Can filter out by tags/topic/category eg. Auditors, Dev shops etc.
      • Functionality to add and remove items from the list (add button obvious, remove button less obvious)
    • (Page 2) Manage page:
      • See all the user’s listings that they have submitted
      • Allows user to update the listings

How to bootstrap the listings on the site

Some strategies…

  • Use the registry to list relevant and useful things category by category eg…
    • List all auditors
    • List all development shops
    • List all user login and authentication tooling
  • Exclusivity eg…
    • MetaCartel will only fund projects if that list themselves in the registry

Simply begin using it and adding to it as a universal yellow book.

Token distribution & initial liquidity

The appreg TCR contract, once it receives grant funding from a DAO will immediately rage quit and allow members in a deployed to claim a proportional amount of TCR tokens based on their DAO voting rights. The grant funding amount also effectively sets the base price for the bonding curve.

  • Tokens are needed to…

    • Add a new listing to the registry
    • Remove a listing to the registry
  • Tokens can be acquired…

    • Via the TCR’s token bonding curve
    • Through an initial/ongoing token distribution airdrops
  • Initial TCR Drop Offering

    • This is a novel new innovation to bootstrap a token network via DAOs, wherein this case the MetaCartel DAO or any other DAO can provide liquidity to the bonding curve and where then, DAO members are given tokens in return.
    • MetaCartel DAO will seek to provide a small amount of liquidity to the bonding curve and initially generate tokens (1-2k USD amount), where all members will receive a flatshare amount of tokens where they are then able to participate in the TCR registry or further fairly distribute tokens to the community.

Progress and timeline

ETHBoston Launch
8th, September

Development and design started.
7th, August

Budget

Item Cost
Smart contract development $4,500 USD
Front end development + Design & UX $1,500 USD

Moloch DAO Shares

The $6,000 in ETH will be sent to the TCR bonding curve as one proposal. This will add liquidity to the bonding curve and in return, Moloch DAO members get tokens in return.

The team behind the project will be awarded pre-mine tokens so that their work is funded and can be redeemed via the bonding curve. (This pre-mine total will be worth less than $6,000 USD and will likely not be withdrawn from the bonding curve.)

From these extra pre-mine token, they will be allocated on this basis…

  • James Young (Tech 70%)

    • Built the first-ever TCR on Ethereum (adChain)
  • Peter ‘pet3rpan’ (Product 30%)

    • Directing UX
    • MetaCartel DAO member
    • Providing guidance and marketing/community support
1 Like

I love the idea of TCR + Bonding Curves in general for incentivizing collective curation (looking into a Bondage Curves variation for SpankChain). And I think dHole could be a valuable resource for the ecosystem.

This is pretty neat!

$6,000

How will this get split up amongst the team members? Or is it entirely to seed the liquidity pool, with extra tokens distributed to team members that they can redeem through the liquidity pool?

UX: Leverages state channels to solve the message signing flow of committing and revealing.

How does this work? @jamesyoung

Also - is there a link to the codebase? Or do we have to wait until after ETHBoston?

The grant will be used to seed the liquidity pool. It would be nice if there were extra tokens allocated to team members so they can redeem through the liquidity pool.

I’ve moved away from the state channel implementation so that it is completely on-chain.

I have the contracts compiling and working through remix. There is an issue with the Registry.sol contract not being deployable using Truffle. I would like to fix that issue and have some tests written prior to uploading to a repo just to avoid any potential confusion from surface level bugs. I plan to get this complete in the next day or two. It would be great to get feedback on the contracts once uploaded.

Leading up to and during ETHBoston I hope to get some help with iterating on the contracts and frontend.

I’ll reply here with repo details.