Estate
- Estate是一个NEP7资产。
- Estate是两个或多个直接相邻的土地地块的组合。这些地块必须直接相邻,不能被任何其他地块隔开。
Estate合约
主要的View读函数
- 基本函数
- EstateId 与 LandId对应函数
- getFingerprint、verifyFingerprint
function getFingerprint(uint256 estateId) public view returns (bytes32 result);
function verifyFingerprint(uint256 estateId, bytes fingerprint) public view returns (bool);
- getFingerprint基于地产名下的地皮ID进行checksum
- verifyFingerprint用来校验地产是否有增减地块
- tokenURI
- EstateId对应的tokenURI地址如下:
<baseTokenURI>/<EstateId>   
tokenURI的内容参考 TokenURI内容格式
- getEstateSize
function getEstateSize(uint256 estateId) external view returns (uint256);
返回指定地产的地块数量
主要的Write写函数
- mint
function mint(int256[] memory x, int256[] memory y, address to) external onlyRegistry returns (uint256);
基于指定(x,y)的Land坐标数组,给指定的地址to 创建Estate
- 参数:- x,y: (x,y)坐标数组
- to: 指定地址铸造地产
 
- 返回值:- 地产ID
 
- 权限:- 指定的地产需要提前授权给Estate合约
- 仅LAND的owner可以创建地产
 
- addLandToEstate
addLandToEstate(int[] memory x, int[] memory y, uint256 estateId)
增加指定LAND到指定的地产estateId
- 参数:- x,y: (x,y)坐标数组
- estateId: 地产Id
 
- 权限:- 指定地产需要提前授权给Estate合约
- 仅LAND的owner可以调用
- 仅estateId的owner可以调用
 
- transferLand
transferLand(uint256 estateId, uint256 landId, address destinatary)
转移指定地产estateId里的指定地块landId到指定地址destinatary
- 参数- estateId: 地产Id
- landId: 需要被转移的LAND的Id
- destinatary: 接口landId的地址
 
- 权限- 仅estateId调用
 
- transferManyLands
transferManyLands(uint256 estateId, uint256[] memory landIds, address destinatary)
转移指定地产estateId里的多个landId到指定地址destinatary
- 参数- estateId: 地产Id
- landIds: 需要被转移的LAND的Id的数组
- destinatary: 接口landId的地址
 
- 权限- 仅estateId调用
 
日志
- 基本的ERC721/NRC7的Event 
- CreateEstate 
event CreateEstate(
  address indexed _owner,
  uint256 indexed _estateId
);
创建地产,仅在mint函数被调用
- AddLand
event AddLand(
    uint256 indexed _estateId,
    uint256 indexed _landId
);
增加地块
在mint函数及addLandToEstate函数中被调用
- RemoveLand
event RemoveLand(
  uint256 indexed _estateId,
  uint256 indexed _landId,
  address indexed _destinatary
);
从地产里移除地块
在transferManyLands和transferLand合约里被调用