地块搬进 Estate:合并成组后,你的 LAND 从钱包清单里消失了 图 1
地块搬进 Estate:合并成组后,你的 LAND 从钱包清单里消失了 · 图 1

虚拟世界的地价高,操作却很朴素:Decentraland 每块 LAND 是 ERC-721 代币,地块坐标编码进代币编号,持有人查余额、转地址,和任何一枚 NFT 无异。变化发生在你想把几块相邻地皮打包管理的时候——官方 LAND Manager 提供”合并成 Estate”的功能,而合并之后,很多用户遇到的第一件事是:地块从我的钱包和 Etherscan 持仓里消失了。先说结论以免悬着心:地还在,只是账本上记到了另一个持有人名下。

消失不是丢失,是转手。官方文档对此写得很坦白:创建 Estate 相当于把你的地块转给了一个新代币,Estate 同样是 ERC-721 代币,此后的地块归属都记在它名下;因此这些地块不再出现在你的 My LAND 清单里,MetaMask、Ledger 钱包或 Etherscan 按地址查持仓也查不到它们。把 Estate 代币理解为一个”小组”:你持有小组,小组持有地块。合约层面的动作在 EstateRegistry 源码里一目了然——每加入一块地,就记一次 AddLand 事件,并维护地块到 Estate 的双向索引;每移出一块,触发 RemoveLand 事件,同时把该地块从 Estate 名下的数组里摘除、转给新主人。地块加回来时有三道门槛:这个 Estate 必须存在、这块地尚未属于任何 Estate、而且地块的当前 ownerOf 必须正是 EstateRegistry 合约本身——三条来自源码里的 require 检查,任何一条不满足都会直接拒绝。

对”相邻”的要求也要澄清口径:官方文档在创建流程里明确要求 Estate 由两块以上直接相邻的地块组成,中间不能隔着道路、广场或其他人的地块;不过合约的低层函数只校验坐标合法且成对,并没有把”至少两块”写死——界面规则与合约规则的关系再次提醒我们,操作手册管流程、链上代码管底线。

Estate 不只是收纳盒,它还改写权限结构。LAND 合约体系里有一类”更新授权”(updateOperator),决定谁能替地块写展示数据、部署场景;EstateRegistry 提供按 Estate 批量下发的函数——对 Estate 内的某块或某批地块统一设置 updateOperator。这解释了为什么虚拟世界的开发商可以统一管理大片的建设权:他们要到的不是每块地单独授权,而是作为 Estate 所有人的一次性批量授权。查询侧同理,地块的 updateOperator 生效关系要顺着”地址持有 Estate、Estate 包含地块”这条链读,直接查地块地址会得到看似矛盾的中间态。

拆分与归还走的是同一套账。Estate 里的地块可以单独移出——触发 RemoveLand、按转账逻辑交回持有人地址,此后它重新出现在你的持仓里;整个 Estate 解散则按合约流程逐项清理索引。转让 Estate 是另一种操作:地块不换手,换的是小组代币的持有人——买家拿到代币的那一刻,整组地块的控制权随索引一起易主,这也是 Estate 常被用于整区交易的机制原因。市场挂单层面也随之一变:出价对象要么是单块地、要么是整个 Estate 代币,两者的成交口径完全不同,看到”某地块收到出价”时先确认出价指向的是地块编号还是 Estate 编号,能避免绝大多数乌龙。

这条”代币装代币”的路线后来被很多项目模仿(合集凭证、土地组合包),踩过的坑也高度一致:用户以为丢了东西、工具查不到持仓、权限链条变长。解法同样朴素——记住合并只是托管关系的开始,Estate 代币、AddLand 与 RemoveLand 事件,就是这段关系在链上的全部凭证。

对账与审计视角也顺带改变。按地址查”这个钱包有几块地”时,Estate 持有人会显示持有 1 个 Estate 代币、0 块 LAND——这不是数据错误,而是托管结构的如实反映;想还原真实地块数,需要读 EstateRegistry 的 landIds 索引或订阅 AddLand 与 RemoveLand 事件重建组合。税务、审计或平台导入资产清单时,这类”名义持仓与实际持仓”的口径差最容易造成报表失真,处理方式是让工具同时识别两级代币并按索引展开。

本文为机制说明,不构成任何投资建议。

地块搬进 Estate:合并成组后,你的 LAND 从钱包清单里消失了 图 2
地块搬进 Estate:合并成组后,你的 LAND 从钱包清单里消失了 · 图 2