LANDRegistry and EstateRegistry Updates
Changes and improvements in Decentraland’s LAND and Estate smart contracts
LANDRegistry
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.
Before:
event ApprovalForAll(
address indexed operator,
address indexed holder,
bool authorized
);
After:
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.
EstateRegistry
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.
Logs
- Add old transfer event and change approveForAll order
- Add
setLandUpdateOperator
- Add
UpdateManager
Tx
- Upgrade LANDRegistry
- Upgrade EstateRegistry
Thanks for your support, and please stay tuned for future technical updates from the Decentraland dApps team!