From b2cd5f66f94e7d378e3319a90283c4d6c5e236e3 Mon Sep 17 00:00:00 2001 From: Fernando Zavalia <24811313+fzavalia@users.noreply.github.com> Date: Wed, 2 Oct 2024 12:54:53 -0300 Subject: [PATCH 1/2] fix: ADR 252 TPRv3 (#271) * fix: ADR 252 TPRv3 * fix: Small fixes * fix: Update content/ADR-252-third-party-registry-v3.md Co-authored-by: Ignacio Mazzara Signed-off-by: Fernando Zavalia <24811313+fzavalia@users.noreply.github.com> --------- Signed-off-by: Fernando Zavalia <24811313+fzavalia@users.noreply.github.com> Co-authored-by: Ignacio Mazzara --- content/ADR-252-third-party-registry-v3.md | 59 ++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 content/ADR-252-third-party-registry-v3.md diff --git a/content/ADR-252-third-party-registry-v3.md b/content/ADR-252-third-party-registry-v3.md new file mode 100644 index 00000000..f8d30d1c --- /dev/null +++ b/content/ADR-252-third-party-registry-v3.md @@ -0,0 +1,59 @@ +--- +layout: adr +adr: 252 +title: Third Party Registry V3 +date: 2024-10-01 +status: Review +type: RFC +spdx-license: CC0-1.0 +authors: +- fzavalia +--- + +# Abstract + +This document explores the enhancements introduced by the third version of the Third Party Registry smart contract. Notably, it outlines how Third Parties can now be created by any wallet, with the cost determined by the number of required item slots. Additionally, it explains the concept and benefits of “programmatic” Third Parties within this new framework. + +# Context + +In the previous version of this smart contract, the creation of Third Parties was restricted to a designated wallet known as the “Third Party Aggregator”. This wallet was responsible for manually adding a Third Party whenever a proposed “Linked Wearable” project was approved through governance in https://decentraland.org/dao/. + +This process restricted the number of projects that could be added to Decentraland, necessitating the development of an alternative approach to improve this functionality. + +# Proposal + +Integrate version 3 of the [Third Party Registry](https://github.com/decentraland/wearables-contracts/blob/91e936526b98f0ac045960507730192121be25ef/contracts/registries/ThirdPartyRegistryV3.sol). + +This updated version removes the `onlyThirdPartyAggregator` modifier from the `addThirdParties` function, enabling any wallet to invoke the function, and thereby allowing anyone to create a new third party. + +However, invoking this function incurs a cost in MANA for the caller, determined by two primary factors: + +**Item Slots** + +When creating a third party, the user specifies the number of item slots by setting the `ThirdPartyParam.slots` argument. The number of slots directly influences the amount of MANA required to pay. + +Each slot has a fixed price in USD, stored in the `itemSlotPrice` variable. This USD price is then converted to MANA using the [MANA/USD Chainlink price feed](https://data.chain.link/feeds/polygon/mainnet/mana-usd), which determines the final MANA amount the user must pay. + +For instance, if MANA is priced at 0.5 USD, and the user wishes to create a Third Party with 10 slots at a rate of 100 USD per slot, the total cost would be 2000 MANA (200 MANA per slot * 10). + +**Programmatic Third Parties** + +Version 3 introduces the concept of "programmatic" Third Parties. Programmatic TPs refer to third parties whose item representations are generated automatically through a script or other processes. For example, an NFT project with 1000 racing cars may generate car representations through a script that modifies textures or other simple details, rather than creating them manually. + +In such cases, users can designate a third party as programmatic by setting the `_areProgrammatic` variable in the `addThirdParties` function as `true`. + +Programmatic third parties are charged a fixed rate based on the `programmaticBasePurchasedSlots` variable. For example, if this variable is set to 20, a programmatic TP will be billed as if it had 20 item slots. However, there is no limit to the number of item slots a programmatic TP can actually have. + +Given that programmatic Third Parties are reviewed by curators before being made available on the platform, users cannot exploit the different pricing models for programmatic and non-programmatic Third Parties. For instance, a user attempting to create a Third Party with 30 manually created items and marking it as programmatic to pay less would fail to comply with the committee's rules and would not be approved. + +--- + +The `buyItemSlots` function has been updated to allow programmatic Third Party managers to add more item slots for free if the initial amount defined was insufficient. + +This function enables users to add item slots to their Third Parties. For non-programmatic Third Parties, the cost of adding additional slots remains the same as the price per slot at the time of creation. + +# Conclusion + +This version of the Third Party Registry removes the reliance on the Third Party Aggregator by allowing anyone to create Third Parties at any time, with the associated cost being collected by the DAO. + +This change grants users greater control and flexibility in managing their projects within the platform. \ No newline at end of file From 4a05bbb24ec7f010f01208797680c2cdfd2800e0 Mon Sep 17 00:00:00 2001 From: Lean Mendoza Date: Wed, 6 Nov 2024 13:23:19 +0100 Subject: [PATCH 2/2] chore: set living ADRs of adopted ones (#274) * chore: set living ADRs of adopted ones * fix crlf * fix crlf --- content/ADR-133-scene-runtime.md | 3 +-- content/ADR-144-realm-resolution-from-connection-string.md | 2 +- content/ADR-200-raycast-sdk-component.md | 2 +- content/ADR-214-pointer-events-sdk-component.md | 2 +- content/ADR-215-gltfcomponent-sdk-component.md | 2 +- content/ADR-219-static-entities.md | 2 +- content/ADR-245-player-components.md | 2 +- 7 files changed, 7 insertions(+), 8 deletions(-) diff --git a/content/ADR-133-scene-runtime.md b/content/ADR-133-scene-runtime.md index a04e0f87..5c30b57a 100644 --- a/content/ADR-133-scene-runtime.md +++ b/content/ADR-133-scene-runtime.md @@ -4,7 +4,7 @@ date: 2022-11-17 title: Scene runtime definition authors: - menduz -status: Draft +status: Living type: Standards Track spdx-license: CC0-1.0 --- @@ -69,7 +69,6 @@ The runtime for the SDK7 is compatible with [CommonJS](https://en.wikipedia.org/ The exposed RPC modules are defined in the [protocol repository](https://github.com/decentraland/protocol/blob/main/proto/decentraland/kernel/apis/engine_api.proto). -> TODO: define and document naming conventions about code generation for modules ```ts // `require` instantiates a proxy to a RPC module. Every exposed function diff --git a/content/ADR-144-realm-resolution-from-connection-string.md b/content/ADR-144-realm-resolution-from-connection-string.md index 09032076..0061eddf 100644 --- a/content/ADR-144-realm-resolution-from-connection-string.md +++ b/content/ADR-144-realm-resolution-from-connection-string.md @@ -3,7 +3,7 @@ layout: adr adr: 144 title: Realm resolution from connection string date: 2022-12-13 -status: Review +status: Living type: Standards Track spdx-license: CC0-1.0 authors: diff --git a/content/ADR-200-raycast-sdk-component.md b/content/ADR-200-raycast-sdk-component.md index ba06f6a7..5f0b06dd 100644 --- a/content/ADR-200-raycast-sdk-component.md +++ b/content/ADR-200-raycast-sdk-component.md @@ -3,7 +3,7 @@ layout: adr adr: 200 title: Raycasting Component for SDK date: 2023-03-14 -status: Draft # pick one of these +status: Living type: Standards Track spdx-license: CC0-1.0 authors: diff --git a/content/ADR-214-pointer-events-sdk-component.md b/content/ADR-214-pointer-events-sdk-component.md index 4aa82e53..86f57c40 100644 --- a/content/ADR-214-pointer-events-sdk-component.md +++ b/content/ADR-214-pointer-events-sdk-component.md @@ -3,7 +3,7 @@ layout: adr adr: 214 # replace this number for the PR or ISSUE number title: PointerEvents SDK Component & Input system date: 2023-04-17 -status: Draft # pick one of these +status: Living type: Standards Track spdx-license: CC0-1.0 authors: diff --git a/content/ADR-215-gltfcomponent-sdk-component.md b/content/ADR-215-gltfcomponent-sdk-component.md index 5da99de5..b8a77cf9 100644 --- a/content/ADR-215-gltfcomponent-sdk-component.md +++ b/content/ADR-215-gltfcomponent-sdk-component.md @@ -3,7 +3,7 @@ layout: adr adr: 215 title: GltfContainer SDK Component date: 2020-02-20 -status: Draft # pick one of these +status: Living type: Standards Track spdx-license: CC0-1.0 authors: diff --git a/content/ADR-219-static-entities.md b/content/ADR-219-static-entities.md index bfd88168..222eb5bd 100644 --- a/content/ADR-219-static-entities.md +++ b/content/ADR-219-static-entities.md @@ -3,7 +3,7 @@ layout: adr adr: 219 title: Reserved & Static Entities date: 2023-04-19 -status: Draft +status: Living type: Standards Track spdx-license: CC0-1.0 authors: diff --git a/content/ADR-245-player-components.md b/content/ADR-245-player-components.md index 86ad1d7a..41fbf1d3 100644 --- a/content/ADR-245-player-components.md +++ b/content/ADR-245-player-components.md @@ -3,7 +3,7 @@ layout: adr adr: 245 title: Player Components date: 2023-08-22 -status: Review +status: Living type: Standards Track spdx-license: CC0-1.0 authors: