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
competition_entry_fee
competition_vote_fee
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
Submission Metadata
submission_url
- URL of video:
https://gleev.xyz/videos/1234
submission_rationale
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?
- Who should voters be?
- How should entries be restricted?
- 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?
- Member can via
member.memberRemark
- Channel cannot do this
- 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?
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
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
competition_metadatathat sets title, description, banner image and other informationcompetition_parameterssets the rules, curator(s), oracle(s), timeframe, video length requirements, fees & reward for the competitionSubmitting videos to competition
competition_parametersentry_feecompetition_curatormust approve videoCuration
Winner(s)
Payout
validorinvalidpaid- indicating to users that the payout has been done.Competition Metadata
competition_banner* URL/JPG:
https://website.com/banner.jpgcompetition_title* text:
"Weekly Cooking Competition"competition_theme* text:
"Cajun cooking"competition_emoji* emoji: prompts emoji selector
competition_tags* tags:
cooking,art,creative,cajuncompetition_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_entrieshas been exceeded. If set to0the competition will start immediately.* Time:
3 dayscompetition_curator_periodcompetition_curatorcan approve entries beforecompetition_vote_periodbeginscompetition_vote_periodcompetition_curator@member_handlecompetition_oraclevalidorinvalid@member_handlemin_video_duration30 secondsmax_video_duration4 minutescompetition_min_entries3 entriescompeition_max_entries52 entriescompetition_entry_fee500 $JOYcompetition_vote_fee3000 $JOYcompetition_fee_recipientcompetition_winner_count3 videosSubmission Metadata
submission_urlhttps://gleev.xyz/videos/1234submission_rationale"insert text here"submission_sourceCompetition conclusion
competition_oracle_resultvalidorinvalidcompetition_payout_txModeration
cancel_rationaleVoting
rationaleemojivote_feePayout
competition_oraclewill manage payouts. This is a social contract.Social features
Individual competition leaderboard
memberswho voted the most/leastVideo maker leaderboard
References
https://monkeytalks.cc
Unanswered questions
member.memberRemarksystem.remark?system.remarkWithEventdo?UI
upcoming,active,concluded