Skip to content

Channel Verification #4487

@dobertRowneySr

Description

@dobertRowneySr

Proposed mechanism for channel verification

Goals 🎯

  1. I have used Twitter legacy verification as an inspiration. According to twitter rules promising verification candidate should be:
    • Authentic: channel owner account should be matched against a twitter, youtube etc.. account
    • Notable: channel should have enough visibility to be deemed important
    • Active: the channel should have activity dating at most x blocks ago
  2. channel verification should be taken care by curators, as suggested in Verified status for channels #2586

Motivation 💡

  • We don't keep channel metadata on chain (like creation date, subscribers and activity stats) so we need to outsource all the verification requirements processing to an external oracle (like one or more curators).
  • I also think that this task pertains to the Content working group and not to the council

Setup ⚙️

Requesting the verification 📃

  • add a field verification in the ChannelRecord data structure. It consists of the following type:
enum Verification {
   NoVerification, 
   Requested(Vec<u8>), // relevant (encoded) metadata (eg, twitter account url)
   Approved(Vec<u8>) // verification & metadata has been approved
   Denied(Vec<u8>) // verification (with metadata) has been denied
}

The channel owner can call the following extrinsic

fn request_verification(
    origin, // must be signed by channel owner or some collaborator with sufficient permission
    channel_id: ChannelId,
    relevant_metadata: Vec<u8>,
    curator_tip: Balance,
); 

This sets the channel verification field from {NoVerification, Denied} -> Requested, this emit a VerificationRequested event with the necessary metadata so that:

Notifying the curator 🛎

Curator notification about the verification request can be made by the user itself (on Discord saying "hey Curator can you verify my channel" or on by the Pioneer FE).

Processing the verification 🔎

After being notified the Curator can invoke:

fn process_verification(
  origin, 
  actor: ContentActor, // must be Lead or Curator
  channel_id: ChannelId
);

The curator (assuming that he's a real world human/very sophisticated AI system) should be able verify all 3 preconditions for verification at his discretion.

Improvements ⬆️

  • requiring a quorem for verification approval, say 3 curators needs to approve before a channel is verified.
  • allowing user to cancel the verification request
  • pay a verification fees (in order to avoid spamming QN with verification request events, expecially by users not worthy of verification, like channels with 2 subscribers). In this case the verification fees can be set by the governance with a proposal

Metadata

Metadata

Labels

crt-v2ideaAn idea for a new feature in any part of the Joystreamproject_tokenProject tokensruntime

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions