A way to moderate the content of the Decentraland collections is needed to prevent spam, abuse, clone and copyright. The Decentraland's collections will be created in a L2, where the expected cost of creating a collection is (almost) 0 USD.
This document presents alternatives on how Decentraland collection moderation will work.
This document use as base a committee/board explained here: https://forum.decentraland.org/t/proposal-wearables-committee-of-curators/320
The management of L2's collections could be handle by the DAO or by a special on-chain entity.
    Entity = DAO
sequenceDiagram
  participant User_1
  participant User_2
  participant User_3
  participant L1_DAO
  participant L1_Bridge
  participant L2_Bridge
  participant L2_Collection_1
  User_1->>L1_DAO: Create vote to approve/reject Collection_1: Vote_1
  User_2->>L1_DAO: Vote "Yes" on Vote_1
  User_3->>L1_DAO: Vote "Yes" on Vote_1
  L1_DAO-->>L1_DAO: Vote_1 passed
  User_1->>L1_DAO: Enact Vote_1 lock
  L1_DAO->>L1_Bridge: Approve/Reject Collection_1
  L1_Bridge->>L2_Bridge: Approve/Reject Collection_1
  L2_Bridge->>L2_Collection_1: Approve/Reject
    Entity = Committee smart contract which will check if the sender of the transaction has balance of an specific token controlled by the Dencetraland's DAO as the SAB token
sequenceDiagram
  participant User_1
  participant User_2
  participant User_3
  participant L1_DAO
  participant L1_Committee
  User_1->>L1_DAO: Create vote to add/remove someone from the committee: Vote_1
  User_2->>L1_DAO: Vote "Yes" on Vote_1
  User_3->>L1_DAO: Vote "Yes" on Vote_1
  L1_DAO-->>L1_DAO: Vote_1 passed
  User_1->>L1_DAO: Enact Vote_1 lock
  L1_DAO->>L1_Committee: Add/Remove someone from the committee
    sequenceDiagram
  participant Committee_User
  participant L1_Committee
  participant L1_Bridge
  participant L2_Bridge
  participant L2_Collection_1
  Committee_User->>L1_Committee: Approve/Reject Collection_1
  L1_Committee->>L1_Bridge: Approve/Reject Collection_1
  L1_Bridge->>L2_Bridge: Approve/Reject Collection_1
  L2_Bridge->>L2_Collection_1: Approve/Reject
    The management of L2's collections will be done by an Entity in L2. The Entity will be managed by the Decentraland's DAO.
    Entity = Committee smart contract which will check if the sender of the transaction is part of the committee chosen on L1. If so, it will forward the message to the collections
A member of the community creates a vote to add/remove someone from the committe/board on the Decentraland DAO.
At vote enactment, a message will be forwarded from L1 to L2 by a bridge ending up with the member added/removed from the Entity in L2.
sequenceDiagram
  participant User_1
  participant User_2
  participant User_3
  participant L1_DAO
  participant L1_Bridge
  participant L2_Bridge
  participant L2_Committee
  User_1->>L1_DAO: Create vote to add/remove someone from the committee: Vote_1
  User_2->>L1_DAO: Vote "Yes" on Vote_1
  User_3->>L1_DAO: Vote "Yes" on Vote_1
  L1_DAO-->>L1_DAO: Vote_1 passed
  User_1->>L1_DAO: Enact Vote_1 lock
  L1_DAO->>L1_Bridge: Add/Remove someone from the committee
  L1_Bridge->>L2_Bridge: Add/Remove someone from the committee
  L2_Bridge->>L2_Committee: Add/Remove someone
    A member of the committee sends a transaction to the Committee smart contract to approve/reject a collection in L2.
The transaction creates a message that will be forwarded to the collection, ending up with the collection approved/rejected.
sequenceDiagram
  participant Committee_User
  participant L2_Committee
  participant L2_Collection_1
  Committee_User->>L2_Committee: Approve/Reject Collection_1
  L2_Committee->>L2_Collection_1: Approve/Reject
    The management of L2's collections will be done by creator in L2. Protocol parameters will be handled by the DAO in L1
    sequenceDiagram
  participant Creator_1
  participant Creator_2
  participant Creator_3
  participant Creator_4
  participant Creator_5
  participant L2_Collection_Curator
  Creator_5->>L2_Collection_Curator: Stake X MANA to publish collection_1
  L2_Collection_Curator ->> L2_Collection_1: Create collection
  Creator_1->>L2_Collection_Curator: Stake Z MANA to challenge collection_1
  Creator_2->>L2_Collection_Curator: Vote "Yes" on the collection_1 challenge: weight 1
  Creator_3->>L2_Collection_Curator: Vote "Yes" on the collection_1 challenge: weigh 1
  Creator_4->>L2_Collection_Curator: Vote "No" on the collection_1 challenge: weight 1
  Creator_5->>L2_Collection_Curator: Vote "No" on the collection_1 challenge: weight 0.1
  Creator_1-->>L2_Collection_Curator: Resolve challenge
  Note right of L2_Collection_Curator: Challenge resolved: Passed (YES: 2 / No: 1.1)
  L2_Collection_Curator->>L2_Collection_1: Act based on challenge outcome
    There are two kinds of challenge: PAUSE, and CLAIM a collection.
The PAUSE challenge should use a small % of the staked MANA.
The CLAIM challenge should use 100% of the staked MANA.
DEPRECATED
X MANA in the Colllection Curator
        smart contract.
      0.1 * X MANA (10% of original stake).
      0.1 * X MANA from the reserve are distributed among the successful challengers.
      0.1 * X MANA is returned to the challenger.0.1 * X MANA to the stake in order to publish it again.
      X MANA to fix the collection.
      0.9 * X MANA (balance of the paused collection) from the reserve are
        distributed among the successful challengers.
      X MANA is staked for the new creatorDEPRECATED
X MANA in the Colllection Curator
        smart contract.
      X MANA.
      X MANA from the reserve are distributed among the successful challengers.
      X MANA is returned to the challenger.Every yes/no vote cost ~ 3 dollars
DAO votes could take too long
As votes can take more than 1 week to pass through all the stages, and collections will be created dinamically and faster by users in L2.
The rejection of a collection will take longer than the grace period, leaving collections approved where they should not.
Committee decision won't need a vote.
Every approval/rejection will cost (almost) 0 dollars.
Based on risk reduction (L2 is new for Decentraland) and resources cointraints we will go with the Alternative X and later, with the Alternative 3. The implementation of the alternative chosen should allow and easy way to iterate.
We decided the alternative 2 is the best approach to set the place where the governance of the collections will happen, in L2.
This decision may be revisited once we define the economics and anti-spam mechanisms that would compromise the stability and operations of the committee.
Can we pre-approve submissions before the creator start working on the collection? like a pre-approved project
Should we need to care about the rarity?
Define guidelines
Send money to the fundation
In alternative 2, can any user propose a collection?:
Yes, there is no limit. It can be abused.