adambudziak / blogchain

Other
2 stars 1 forks source link

Design the economy of the BlogChain #9

Open adambudziak opened 5 years ago

adambudziak commented 5 years ago

BlogChain Economy

Introduction

This document describes the basic goals of BlogChain and the economy system it uses to achieve them.

The idea of BlogChain is to allow creators of various kinds of texts to earn money on their work. The main functionality provided is a typical blog website onto which everybody can submit their articles and other users may interact with them in multiple ways.

User activities

The user activities can be split into two categories: public and personal, or - equivalently - permanent and temporary. The main distinction between them is that the public (permanent) actions always require a verification on the Blockchain, and therefore, the user needs to spend some amount of money to perform them; however, the personal (temporary) activities have no verification and are free.

Public user activities

The public activities are those which have an impact on other users, such as:

(this list may be expanded over time).

Besides the inherent gas price, each activity defines a fee that the user needs to pay to perform the action.

Posts

The idea is that every user benefits from building his own brand by, for example, writing good-quality posts which gain many upvotes and few downvotes. When one has passed some kind of a reputation "threshold", he can create a fund for a next post; the other users will pay upfront for the next post which won't be published until a certain sum is gathered. (More details on this later)

Each user can create an arbitrary number of posts and the creation fee is . (Do we want it to be constant or change in time to, for example, match some fixed amount in fiat currency?). The fee goes in full to the site maintainers who are also owners of all the contracts. Currently, there is no discount for new accounts to discourage users from posting with temporary profiles (But we may consider such a discount in the future when having a single high-reputation account is more beneficial).

Comments

Each post has a comment section in which everybody can comment an indefinite number of times. Each comment has a fee of and it is distributed as follows:

The sum for the commenters is divided accordingly to their current number of votes. If there are less than 5 comments, then it is assumed that the number of votes of the missing ones is 0 (so these don't get any money). If there are any comments with the same number of votes, then there are at least three strategies we can pick:

(TODO this model of payments may discourage users from commenting a post when they disagree with the author because the commenter may not want to pay him anything in this case. We may consider an extension where the user customises to whom go fractions of the fee while keeping the total constant so no option is preferable.)

Votes

Each user can vote on every post or comment once and his vote is permanent. Just as commenting, voting requires a fee of and it's split depending on the target of the vote:

Getting votes affects the reputation of a user (the algorithm must be fairly cheaply computable on the blockchain) and that reputation is required to perform trust-based actions, such as starting a fund for a next post in a series.

Creating a fund

This mechanism allows post authors to create a safe fund for publishing next post. It works as follows:

  1. An author, with some amount of reputation, creates a fund with some fixed amount of money as the target, and uploads the article to the TTP.
  2. The TTP keeps the article secret and monitors the fund.
  3. Users keep committing to the fund, which is based on the blockchain and allows withdrawal only after releasing the article.
  4. When the target amount is achieved, the TTP publishes the article, and the author can withdraw his money from the fund.
  5. Before achieving the target, the author may abort the fund and in this case all funds are transferred back to the users.

The details of the above description may change but the overall idea should stay the same - allow creating safe funds which protect both the authors of the content as well as the sponsors.

Ideally it should not require a TTP but we're not aware of any practical solution based purely on blockchain. With the TTP there are a few issues to consider:

Similarly as all other action, creating a fund requires a fee of . Sponsoring the fund costs and since releasing the article requires no operations on the blockchain, it's free (or maybe it requires, I guess it will show up in the implementation).

Editing a post

Since posts may be subjects of intense debate it may be beneficial to allow small edits that could improve their quality. However, posting is a permanent action, so the edit must be a standalone object that will be merged with the original content dynamically in the webbrowser.

Additionally, the edits should not be allowed to modify the post too much. Comments and votes are permanent and may get invalidated by deep changes thus making voters and commenters feel cheated on. To mitigate this, the edits will be shown as optional erratas on top of the original post.

Edits have a fee of .

(TODO How to handle multiple edits?)

Mc01 commented 5 years ago

@adambudziak can you add more description here? Do you need some help with brainstorming on that?

adambudziak commented 5 years ago

I will improve the description soon and when I start working on it, I will show you my proposition on how it could be. Then, I'll need your help in verifying whether it will work and be secure against malicious behaviors.

adambudziak commented 5 years ago

@Mc01 added description.

Mc01 commented 5 years ago

Will go through it today evening or tomorrow during the day 👍

adambudziak commented 5 years ago

Ok, so a few slight changes:

Funds from Comments and PostVotes will be given to the author of the post (50%), and funds from CommentVotes to the author of the Comment (25%), and to the author of the Post (25%).

The remaining 50% of each action goes to me (contract owner).

This is still lame as even if someone downvotes a Post/Comment, his funds still go to the author, and I can imagine people wouldn't like to something they disagree with. Not sure how to fix it though. Making downvoting cheaper by removing the fee for the author would remove the balance in prices which may have other unfavorable side effects.

Now I the best idea is to separate the donate and vote functionalities. Voting is free (except the fee for me, and gas) but can be done only once. Donating allows an arbitrary amount of money to be sent and can be done multiple times. The frontend could then add some shortcuts like "Donate when upvoting" option.