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.