by 0x87956abc4078a0cc3b89b419928b857b8af826ed (Nacho)
Enable Onchain Delegation Support in Decentraland Protocol
This proposal aims to integrate wallet delegation support into the Decentraland protocol by leveraging the Catalyst network.
Currently, Decentraland users are limited to a single wallet per profile. This design restricts users from showcasing the full extent of their NFT collections, especially those stored in more secure, offline wallets. Furthermore, companies building on Decentraland and offering wearables often face friction when interacting with users who utilize multiple wallets, particularly in Web2 login flows that abstract wallet management.
This proposal suggests enabling support for wallet delegation mechanisms, allowing users to delegate ownership rights from secure wallets to hot wallets or Web2-managed wallets. This change will require Catalyst's changes to support delegation checks when validating wearable ownership during profile deployment.
Another use case could be enabling LAND owners to grant deployment rights through delegations.
This proposal has been created based on the following pillars:
After researching existing delegation standards like Snapshot and delegate.xyz, we concluded that none of them are fully suitable for our needs, each has critical limitations that prevent direct integration. Instead of relying on an external protocol, we’ve decided to take the best ideas from each and implement delegation directly within the Catalyst network as a new entity type.
This approach ensures that all delegation data is:
We will define a new entity type within the Catalyst network to represent delegations. This entity will use a URN format to ensure consistency and indexability:
urn:decentraland:polygon:delegation:{wallet_in}
Example:
urn:decentraland:polygon:delegation:0xNacho
In this case, 0xNacho is delegating the usage of their assets to other wallets
Each delegation entity will store a JSON payload with three optional delegation scopes:
{
"TYPE_ALL": {
"wallet_out": "0xNico",
"expiration": 1746528746
},
"TYPE_CONTRACT": [
{
"wallet_out": "0xMati",
"contract": "0x8a7643522886f60352e041b67b788dcf0f3666dc",
"expiration": 1746528746
}
],
"TYPE_NFT": [
{
"wallet_out": "0xYemel",
"contract": "0x8a7643522886f60352e041b67b788dcf0f3666dc",
"token_id": 1,
"expiration": 1746528746
}
]
}
At least one delegation type must be defined to grant permissions. However, if the user wants to remove/revoke all delegations, they can simply submit an empty payload, like this:
{}
0xNico can use all wearables and emotes owned by 0xNacho, except those from collection 0x8a76...6dc.0xMati can use all assets from collection 0x8a76...6dc, except token ID 1.0xYemel can use only token ID 1 from collection 0x8a76...6dc.content-validator must be updated to:
wallet_in and wallet_out.Adding wallet delegation support enhances Decentraland’s security, flexibility, and inclusivity. It empowers users to keep their assets safe without sacrificing usability, and it removes friction for users and projects integrating with Web2 login solutions, as well as those using Linked Wearables. By incorporating a delegation standard, Decentraland can evolve without introducing proprietary complexity, enabling a safer and more seamless user experience.