ADR-34: Collections Technical Approval Flow

More details about this document
Latest published version:
https://adr.decentraland.org/adr/ADR-34
Authors:
nachomazzara
menduz
ShibuyaMartin
Feedback:
GitHub decentraland/adr (pull requests, new issue, open issues)
Edit this documentation:
GitHub View commits View commits on githistory.xyz

Introduction

Every item as wearable, emotes, 3d object, PO, etc in Decentraland's world is represented by a non-fungible token ERC #721 that is indivisible and unique. Those items together defines a collection which works as a registry powered by a smart contract where it is defined all the information. A collection can be built by anyone but approved by a governance system (committee).

Solution

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 the Polygon network governed by the Ethereum DCL DAO. The collection deployment will have a cost in MANA based on the items amount and its rarities. Each collection will be created as rejected waiting for the approval of the members of the committee. Once the collection is created in the blockchain successfully, all the collection's items will be uploaded to the content server with their respective properties and files. The content server will check that the collection was already created in the blockchain, is rejected, and also, the user who is trying to upload the items is the collection's creator or manager at this specific timestamp (block number). A collection must not be approved by the committee members if the items are not correctly submitted to the content server. While the collection is approved, changes are not allowed enforced by the collection smart contract.

After a collection is approved, the creator can request to make changes to one or more of the items in the collection in order to fix/update them. Therefore, the committee members must reject the collection first. Once the collection is rejected again, the collection's creator or manager can upload the changes to the content server. If the creator uses this to break the collection, anyone can create a DAO proposal to rescue/revert the item to a previous version. If the proposal ends affirmative, a committee member can perform the item's rescue mentioned here

To known more about the different collection's actors, refers to this document.

Tech

Each collection has a isApproved property which starts as false once the collection is deployed. This property is set to true once someone on the committee approves it.

The content server checks access for every WEARABLE entity's @POST. The checks include if the collection is rejected and the user who is doing the request is the creator or manager of the collection/items at this specific timestamp (block number), and the items weigh less than 2MB.

Each item has a property called contentHash used to rescue/revert an item. To set that content hash manual steps by a member of the committee are needed. But in terms of blockchain interactions two things are crucial:

Both transactions should be done by calling the committee smart contract. You can see the interactions between contracts here

License

Copyright and related rights waived via CC0-1.0. DRAFT Living