Tribler / tribler

Privacy enhanced BitTorrent client with P2P content discovery
https://www.tribler.org
GNU General Public License v3.0
4.74k stars 445 forks source link

Blockchain Engineering 2023 - Upvote Token II #7307

Open synctext opened 1 year ago

synctext commented 1 year ago

Upvoting token. Each user can give away an infinite amount of ❤️ tokens. Content creators are rewarded with ❤️ tokens, boosting their visibility. Content gathering lots of ❤️ will get more attention and go viral. Content creators can see in real-time who is giving them a ❤️ token. The ❤️ token economy design and implementation is your responsibility. Part of your demonstration will be a wipe-based UX implementation which favours viral content. Fraud and manipulation of your token economy such as the Sybil attack can be ignored. Bonus background reading: The like economy: Social buttons and the data-intensive web.

WJehee commented 1 year ago

Status update (27-02-2023)

All 6 members are added to organization, all members can compile the project and have read the background. Added a like button to the main screen.

Questions

  1. Should others be notified of the like? As in, should others (i.e. the network) eventually know who likes what and thus an aggregate can be constructed? Or do we trust a node to report its own likes with a given video?
  2. I am not sure what role Sybil attack plays here? If I understand correctly our task is merely to send a generic token when something is liked to the network. Who sends the like token doesn't matter much. Only issue I can think of is users creating accounts to like their own videos but that's a problem in any such system (buying likes/follows). And if we use other metrics to choose top content, simply buying likes is not enough, thus the reward is diminished.
  3. What constitutes for our project an MVP (minimum viable product). I understand the two major parts are the like sending and registering and content choice. BUT this hinges on the fact that there already is a functional content upload system and users attached to them. And that such an ecosystem exists and that it is large enough so that the content recommendation can be actually useful and noticeable. So how to get around this without also implementing content publishing and accounts and all that (because I feel this goes out of the scope of our project)? And idea I would have is to simply populate the network with some 10/15 accounts each with some 10/15 videos and then use that as a demonstration. The problem is this is a very small network and a person would have at most 10/15 likes, hard to show virality. Also this is too little to show any sensible recommendation system (especially one based on something more than just number of likes as it requires some time to "learn"). So hence the question: what is MVP for this project (and inquire well what the requirements are)
  4. Should visibility be based on the amount of likes the video has gathered or the amount of likes the creator has, or both?

Answers

  1. See below: dashboard page for creators
  2. Can be ignored
  3. No concrete MVP, maximize features
  4. See below: think like TikTok product owner
synctext commented 1 year ago
ivanstodorov commented 1 year ago

Ivan's branch: https://github.com/NikolayBlagoev/trustchain-superapp/tree/profile-page

Ignjat and Wouter's branch: https://github.com/NikolayBlagoev/trustchain-superapp/tree/4-relay-messages-received Nikolay's commit to master: https://github.com/NikolayBlagoev/trustchain-superapp/commit/d2e0ba2b1134e921d9e31d69e19870cfa27f0919
synctext commented 1 year ago
WJehee commented 1 year ago

Meeting (14-03-2023)

Progress

Goals

synctext commented 1 year ago
WJehee commented 1 year ago

Made the pull request! We still need to fix the merge conflicts however, hopefully we can get that done within the next few days.

WJehee commented 1 year ago

Meeting (23-03-2023)

Progress

Goals

Screenshot from the app

image

synctext commented 1 year ago
WJehee commented 1 year ago

Meeting (31-03-2023)

Link to most up to date working APK

Progress

Goals / Todo

synctext commented 1 year ago
WJehee commented 1 year ago

Meeting (07-04-2023)

Latest APK

Progress

Goals

synctext commented 1 year ago
WJehee commented 1 year ago

Meeting (20-04-2023)

synctext commented 1 year ago
NikolayBlagoev commented 1 year ago

The tracker was not used for the demo. It is provided as an altruistic "dummy node" which can seed content when the original creator is not online. It is used as a more stable alternative to the IPv8 python package which was quite buggy and often refused to work. This implementation on the other hand was stable and would never fail us when we would need to test content uploading/downloading.

Currently we rely on public trackers to discover content (the bittorrent public trackers) and not on a private tracker (the phones seed the content themselves). There is no way as far as I am aware to have working magnet links reliably without trackers (and they havve become the defacto standard in the modern torrenting world).

The issue we aimed to counteract is the following (a short incentive analysis): 1) when a user creates their own video, they have interest to seed it (as they want others to discover it). 2) When another user downloads that video, they are obligated to also upload (by the bittorrent protocol, as otherwise their download speed would also halt). Thus when downloading another person also has incentive to seed. 3) When the video is downloaded the other person no longer has an incentive to seed. Even in the current bittorrent protocol, seeding after the file is fully downloaded is considered purely altruistic behaviour. 4) The original user can then disconnect from the network (application closed, changed networks, etc. - all of which were issues not fully resolved by either IPv8 or libtorrent). Thus their video can no longer be downloaded by anyone, which will lead to loss of potential views/likes. If the network were large enough, there could often be many active users currently sharing content between each other, thus, probabilistically, that content would not be lost. 5) However, as we are in a stage with only 3 users, we provide altruistic nodes which can help the network in the early stages and thus not lose engagement.

In the future, the application could make use of tokens to pay others to seed your video while you are offline (and thus counteract the need for altruistic nodes). However, this was considered out of the scope for this project and hence a more simple solution is offered