district0x / district-proposals

Proposals for new districts to be built by the district0x Team.
https://vote.district0x.io/
212 stars 36 forks source link

DP #225: Calender0x - A Decentralized Calendar for the Biggest Events in Crypto #225

Open MrEngineer13 opened 6 years ago

MrEngineer13 commented 6 years ago

Name:

Calender0x - A Decentralized Calendar for the Biggest Events in Crypto including releases and ICO's

Purpose:

Keeping up with the latest developments in Crypto is a full time job, and it shouldn't be. One solution is to have the ability to vote on the most exciting & upcoming events in Crypto, from tech updates, showcases to ICOs.

Description:

EDIT:

This is similar to AdChain

Application Process

  1. A publisher calls apply() to create an application and puts down a deposit of DNT. The apply stage for the application begins. During the apply stage, the application is waiting to be added to the whitelist, but can be challenged or left unchallenged.

    The application is challenged:

    1. A challenger calls challenge() and puts down a deposit that matches the publisher's.

    2. A vote starts (see Voter and Reward Process).

    3. After the results are in, the anyone calls updateStatus().

      If the applicant won, the domain is moved to the whitelist and they recieve a portion of the challenger's deposit as a reward. Their own deposit is saved by the registry.

      If the challenger won, their deposit is returned and they recieve a portion of the applicant's deposit as a reward.

    The application goes unchallenged:

    1. At the end of the apply stage, updateStatus() may be called, which adds their name to the whitelist. The applicant's deposit is saved and can be withdrawn when their whitelist period expires.
  2. To check if a publisher is in the registry, anyone can call isWhitelisted() at any time.

Rechallenges

  1. Once a domain is whitelisted, it can be re challenged at any time. To challenge a domain already on the whitelist, a challenger calls challenge() and puts down a deposit of DNT to match the current minDeposit parameter.

  2. If a whitelisted domain is challenged and does not have enough tokens deposited into the contract (ie a whitelist's current deposit is less than the minDeposit parameter), then the domain is automatically removed from the whitelist.

Publisher Interface

  1. Deposit() - if the minDeposit amount is reparametrized to a higher value, then owners of whitelisted domains can increase their deposit in order to avoid being automatically removed from the whitelist in the event that their domain is challenged.

  2. Withdraw() - if the minDeposit amount is reparametrized to a lower value, then the owners of a whitelisted domain can withdraw unlocked tokens. Tokens locked in a challenge may not be withdrawn.

  3. Exit() - the owner of a listing can call this function in order to voluntarily remove their domain from the whitelist. Domains may not be removed from the whitelist if there is an ongoing challenge on that domain.

Voter and Reward Process

  1. The vote itself is created and managed by the PLCR voting contract.

  2. Voters who voted on the losing side gain no reward, but voters who voted on the winning side can call claimReward() to claim a portion of the loser's (either the applicant's or the challenger's) deposit proportional to the amount of DNT they contributed to the vote.

  3. No tokens are ever lost or burned because the reward pool of tokens is repartitioned every time claimReward() is called.

Reparameterization Process

  1. To propose a new value for a parameter, a user calls changeParameter() and puts down a deposit of DNT with the parameter and the new value they want to introduce. A vote to make or disregard the proposed change is started immediately. The deposit will be returned to the user upon completion of the poll.

  2. After voters have committed and revealed their votes within the vote contract, anyone calls processProposal() to evaluate the results of the vote. Deposited tokens are returned to the user who proposed the parameter change. If the results show that the proposed change is approved, the parameter value in the params mapping is changed.

  3. To check the value of parameters, a user calls get() with the string keyword of the parameter.

Vote Cost

Improvements

Clout Calculation
  1. A users clout would be a formula based on things like account age, number of votes cast and the percent of challenges won.

  2. Would be used to discount or inflate the cost of a vote costs twice as much as the one before it

  3. A clout minimum would be started so new accounts would be unable to submit application for review without first contributing to the community

Trust Pools

A trust pool could be used instead of the minimum deposit so instead of a fixed value for the minDeposit, there would be a couple options to calculate the amount of DNT to stake

  1. The trust pool would be at the listees discretion, as they would set the amount in the trust pool based on their assessment of the risk
  2. The trust pool size would be a percentage of thier DNT holdings based on their clout.
    1. For a listee with a low amount of clout, the trust pool used to stake a new proposal would be just under 100% of their DNT so if the proposal got challenged and the listee lost, they would loose their DNT and would need more to submit more applications.
    2. For a listee with higher clout they would be required to stake 50% of their DNT on a new submission. That way it would encourage high quality submissions and if a listee wanted to go rouge and buy as many DNT to get the amount of the DNT stake so high that it wouldn't be challenged. If the listee lost the challenge, they would have lost the large amount of DNT, which would mean that any future attack on the network would be useless.

Original Text:

So someone submits a link to the news/updates. That initial submission needs confirmation by a number of users. That number is to be determined and is open for discussion. Those users also edit and tag the submission because once it has been confirmed it can't be edited. Once it's confirmed, votes then get added to the event and those events rise to the top similar to how Reddit works. The tags & metadata would also help you to filter by project, time and vote count.

Why do we need a district for this when there are websites/projects that are similar? Simple - fraud. As these calendars get more and more influential ICOs and even projects have a financial incentive to inflate the excitement around their projects, we've already seen this already with websites that "grade" ICOs. By using a smart contract we would make it difficult to setup fake accounts, it is more time consuming to make a bunch of fake ETH wallets to vote. A smart contract could do things like block certain private keys and obviously it would be timestamped so EVERYONE could watch out for things like voting irregularities.

Looking forward to feedback & improvements.

Ethereum Address:

Thanks, MrEngineer13 0x645611185a21C065ecDA613E5Fca56c7228312bD

Bradymck commented 6 years ago

Hey thanks for submitting. If you would please describe more about how this would work as a market as well as how governance would work. Also please elaborate on the fraud aspect of this and how Sybil attacks could be mitigated. It's really not going to stop a financially motivated group from creating multiple accounts if they have something to gain from doing so with a fraudulent ICO or something.

My suggestion would be to read up on token curated registries similar to the ones we will be employing and Aragon governance concepts similar to those outlined in the post by Fred Ehrsam that could help with this model. Great submission though, if you elaborate on governance and quality control more this may become a very useful tool.

MrEngineer13 commented 6 years ago

Thanks for the feedback, spent yesterday reading. Edit Incoming.

MrEngineer13 commented 6 years ago

Hope this helps but it would be similar token curated list like AdChain. Also to answer your question Brady about Sybil attacks, there would be quadratic voting so it would take a non-trivial amount to buy any influence. Been trying to cobble things together but let me know if this makes sense to you.

Bradymck commented 4 years ago

Hey @MrEngineer13

I'm not sure if you're aware but we recently launched a new bounty to migrate your proposals to the actual District Registry: https://registry.district0x.io/

We're replacing the old voting app with the registry. Let me know if you need help but I would love to see you migrate this over so you can claim your DNT.

It does take a 10,000 DNT submit to submit your proposal but this gives you an extra 2000 you can stake in the registry beyond the deposit amount.

Hit me up on Telegram or Discord if you need help or have questions.

Telegram: https://t.me/district0x/75217 Discord: https://discord.gg/P9RQejv

PS, please excuse the canned response. I am encouraging everyone here to start migrating so they can claim their 12000 DNT.

I have learned a lot about TCRs since you submitted this proposal. We should chat!