We upgraded the LANDRegistry contract with a new role called updateManager.

The updateManager is allowed to:

  • Set the updateOperator of any LAND the owner has.
  • Set the metadata of any of the owner’s LANDs.

We realized that the first Transfer events weren’t indexed because of the missing declaration in the contract and therefore in its ABI (application binary interface).

The old Transfer event declaration that we’ve added back in is:

event Transfer(
    address indexed from,
    address indexed to,
    uint256 indexed assetId,
    address operator,
    bytes userData,
    bytes operatorData

We also fixed the ApprovalForAll event parameters name order where operator was in holder place.


event ApprovalForAll(
    address indexed operator,
    address indexed holder,
    bool authorized


event ApprovalForAll(
    address indexed holder,
    address indexed operator,
    bool authorized

With the new upgrade, the ABI of the contract is fixed, more consistent, and ready to get all Transfer events.


We’ve added along with the updateManager role, the possibility to set the updateOperator for specific LAND parcels within an Estate.

The updateManager is allowed to:

  • Set the updateOperator of any Estate the owner has.
  • Set the a LAND UpdateOperator of any LAND parcels inside any Estate of the owner.
  • Set the metadata of any of the owner’s Estates.
  • Set the metadata of any of the LAND parcels inside any of the owner’s Estates.

The updateOperator is allowed to update asset content. This means that you can set an address to decorate your asset safely.

Now, with this new feature, your Estate can be decorated by different decorators without losing traceability nor changing the updateOperator multiple times.

Remember that if you buy an Estate, the Estate updateOperator will be cleared but the LAND updateOperator won’t. So, if you buy or receive an Estate with the updateOperator set in its LANDs you will need to clear them by sending a transaction to the EstateRegistry smart contract.

To set the updateOperator for a specific LAND you need to send a transaction to the EstateRegistry smart contract calling the setLandUpdateOperator:

function setLandUpdateOperator(
    uint256 estateId,
    uint256 landId,
    address operator

Only the owner or operators are allowed to set a LAND updateOperator

If you are building an integration based on Decentraland’s smart contracts using any of our tools, or if you are interested in receiving information about technical updates, please fill out this form.


Thanks for your support, and please stay tuned for future technical updates from the Decentraland dApps team!