MEP: 1002 Title: Nestable Non-Fungible Tokens Tied to IoT Geolocations Status: Draft Type: Standards Created: 2023-04-20
This MEP proposes a new standard for Nestable Non-Fungible Tokens (NNFTs) tied to IoT geolocation using the h3geo algorithm. The proposed NNFTs are capable of mapping real-world geographical locations to tokens, and can be nested within other NNFTs.
Geolocation is becoming an increasingly important aspect of modern applications, and there is a growing need for geolocated tokens. However, current non-fungible token (NFT) standards do not support mapping real-world geolocation data to tokens.
This MEP proposes a new standard for Nestable Non-Fungible Tokens (NNFTs) that are tied to geolocation using the h3geo algorithm and can be parent-governed for nested token management.
To guide the IoT miners to deploy the network and also to prove the geolocation for the miners and sensors, NNFTs can provide privacy protection for a better decentralized IoT infrastructure.
This MEP builds upon the existing EIP-721 (NFTs) and EIP-6059 (Parent-Governed Nestable Non-Fungible Tokens Metadata URI Scheme). Therefore, the required interfaces for this MEP are:
- EIP-721: https://eips.ethereum.org/EIPS/eip-721
- EIP-6059: https://eips.ethereum.org/EIPS/eip-6059
Each MEP1002 will be uniquely identified by a h3geo coordinate, which is a 64-bit integer.
Each MEP1002 will be parent-governed, allowing the parent to manage the nested tokens within.
The EIP-6059 standard for Parent-Governed Nestable Non-Fungible Tokens Metadata URI Scheme will be used for MEP1002s created using this protocol. The following attributes will be included in the metadata URI:
parentTokenId
: The parent MEP1002's unique token ID.geolocation
: The h3geo coordinate associated with the MEP1002.
This MEP introduces a new interface, MEP1002, for the Nestable Non-Fungible Tokens Tied to Geolocation. This interface inherits from EIP-6059
with the following modifications:
/// @title MEP-1002
pragma solidity ^0.8.16;
interface IMEP1002 /* is ERC6059 */ {
// Returns the h3geo coordinate of the MEP1002.
function geolocation(uint256 _tokenId) external view returns (uint256);
}
NOTE: The actual situation may be more complex, for specific details please refer to https://github.com/MXCzkEVM/core-contracts/blob/main/contracts/token/MEP1002Token.sol
- EIP-721: https://eips.ethereum.org/EIPS/eip-721
- EIP-6059: https://eips.ethereum.org/EIPS/eip-6059
- h3geo algorithm: https://h3geo.org/