Skip to content

Votebox - video competitions/subcommunities #926

Description

@mochet

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions