Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Votebox - video competitions/subcommunities #926

Open
mochet opened this issue Mar 18, 2024 · 0 comments
Open

Votebox - video competitions/subcommunities #926

mochet opened this issue Mar 18, 2024 · 0 comments

Comments

@mochet
Copy link
Collaborator

mochet commented Mar 18, 2024

Description

Votebox is a very early stage & rough concept for how to do scalable competitions for video subcommunities. It can be built using a metaprotocol.

UX Flow

Creating a competition

  • Only Curator WG Lead or an approved worker can create, manage or cancel a competition
  • Content Curator Lead can add/remove worker permissions for creating and managing competitions
  • Competition has
    • competition_metadata that sets title, description, banner image and other information
    • competition_parameters sets the rules, curator(s), oracle(s), timeframe, video length requirements, fees & reward for the competition

Submitting videos to competition

  • Any user can add any video at any time
    • Video only counts if it falls within the competition_parameters
  • Subsequent entries of the same video are ignored, only first submission counts
  • Fee must be above entry_fee
  • competition_curator must approve video

Curation

  • Curator must approve entries and ensure they follow the rules or theme with a rationale before they are placed in the competition

Winner(s)

  • Are determined automatically by competition parameters and the result is shown to users

Payout

  • Payout is done by the selected oracle
  • They must also declare the competition as valid or invalid
  • App generates payment extrinsic with exact requirements of competition outcome
    • Upon payment the app checks the for payment and updates to paid - indicating to users that the payout has been done.

Competition Metadata

  • competition_banner
    * URL/JPG: https://website.com/banner.jpg
  • competition_title
    * text: "Weekly Cooking Competition"
  • competition_theme
    * text: "Cajun cooking"
  • competition_emoji
    * emoji: prompts emoji selector
  • competition_tags
    * tags: cooking, art, creative, cajun
  • competition_description
    * text: "Hi! This is our weekly cooking competition! This week we're looking into cajun cuisine. Please follow the rules and have fun!""`
  • competition_conditions
    * text: "Only original content, submissions must be between 30s - 4 minutes long. No music."
  • competition_reward
    * number of winning entries: top 3 videos
    * number: 22k $JOY
    * text_1: "featured on Joystream Twitter"
    * text_2: "featured on Gleev homepage for 1 day"

Competition Parameters

  • competition_starttime
    * Start time is in the future, this is from when entries will be allowed. This will allow the competition to be prearranged and announced for maximum impact.
  • competition_submission_period
    * This will be the duration that entries can be submitted, which will start once competition_min_entries has been exceeded. If set to 0 the competition will start immediately.
    * Time: 3 days
  • competition_curator_period
    • This will be the time period in which the competition_curator can approve entries before competition_vote_period begins
  • competition_vote_period
    • The length of time that voting will be allowed
  • competition_curator
    • This is the member(s) who curate the content--approving videos into the competition. They will be given permissions by being listed here.
    • membership handles: @member_handle
  • competition_oracle
    • This is the person(s) who handles payment
    • After competition end they can declare the outcome valid or invalid
    • membership handles @member_handle
  • min_video_duration
    • Minimum duration of a video--entries outside this are ignored
    • number: 30 seconds
  • max_video_duration
    • Maximum duration of a video--entries outside this are ignored
    • number: 4 minutes
  • competition_min_entries
    • The minimum number of entries required for the competition to start
    • number: 3 entries
  • compeition_max_entries
    • number: 52 entries
  • competition_entry_fee
    • number: 500 $JOY
  • competition_vote_fee
    • number: 3000 $JOY
  • competition_fee_recipient
    • Fees paid for entries or voting are sent to this address--can be used as the prize pool
    • Default is blank
      • Membership faucet address?
      • Custom address
      • Description of who the address owner is
  • competition_winner_count
    • number: 3 videos

Submission Metadata

  • submission_url
    • URL of video: https://gleev.xyz/videos/1234
  • submission_rationale
    • text: "insert text here"
  • submission_source
    • determined if submitter is the original uploader of the video

Competition conclusion

  • competition_oracle_result
    • Oracle issues judgement if the competition is valid or invalid
  • competition_payout_tx
    • This is a link to the transaction where payout(s) occurred

Moderation

  • Moderator can cancel competition with cancel_rationale
    • Fees can be refunded if desired

Voting

  • Any member can vote
    • Can provide optional rationale
    • Can provide optional emoji
    • Fee must be above vote_fee
    • Can vote multiple times

Payout

  • The competition_oracle will manage payouts. This is a social contract.

Social features

Individual competition leaderboard

  • Shows a list of videos
    • Winners highlighted
    • Highest rated videos shown first
  • Voter page that shows the members who voted the most/least

Video maker leaderboard

  • Shows channels that have won the most times and what their rewards have been

References

https://monkeytalks.cc

Unanswered questions

  • Metaprotocols and fees are used
  • Who is moderator?
    • Content Curator WG?
  • Who should voters be?
    • Members?
    • Channels?
  • How should entries be restricted?
    • Category?
      • seems restrictive
    • Length?
      • yes
  • Where do fees go?
    • They can go to the validator that authors the block
      • Tip must be set on TX submission
      • Query node does not track this
    • Can this be changed to send to any random account?
  • Where does reward go?
    • Channel owner?
    • NFT owner?
    • Person who submits?
    • Split?
  • Can membership deposit be used for system.remark?
    • This needs testing via signup flow
  • What does system.remarkWithEvent do?
    • Asked builders WG

UI

  • List of competitions on sidebar
    • Show whether upcoming, active, concluded
    • Entry count
    • Countdown to start/finish time
  • Title/description/theme is shown of currently selected competition
  • Basic stats
  • Videos are shown on a carousel in random order which autoplays the primary video
  • User can click next/previous video to browse videos
    • Or user can click to get a random video
  • User can vote for a video
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant