Skip to content

ERC994: Delegated Non-Fungible Token Standard #994

Closed
@Physes

Description

@Physes

Delegated Non-Fungible Token Standard

EIP: <to be assigned>
Title: Delegated Non-Fungible Token Standard
Author: Philip Saunders <[email protected]>
Type: Standard
Category: ERC
Status: Draft
Created: 2018-03-15

Simple Summary

Delegated Non-Fungible Tokens (DNFTs) are a proposed extension of the ERC721 standard designed with the use case of Ethereum-based registration of land and physical property in mind. NFTs are arranged in a federated, tree-like format (similar to DNS) where NFTs can delegate and sub-contract NFTs within a certain geospace.

Unlike digital assets (like CryptoKitties) physical property requires more than just an accurate identification in a database- it also requires legal validity within the context of physical sovereignty. DNFT zones can established by land registry authorities as a root DNFT encompassing a wide area, and can delegate DNFTs as subdivisions of the root zone to existing property holders as a way to upgrade land registries. This is intended to secure the following essential features:

  • A non-conflicting geospace

  • Legal validity and physical sovereignty

  • Compatibility with financial contracts

Abstract

Non-Fugible Tokens were proposed as a way to give identity to external objects on the blockchain. There have been some speculative use cases for digital assets already created, however NFTs have inherent limitations as a standard to apply to physical property. DNFTs add two basic features- writs, which is a fungible representation of geospace that can be delegated. Writ quantities are recorded as an unsigned integer. In addition, there is height variable (also an uint) which represents the level of delegation (1st, 2nd, 3rd, etc.).

Motivation

To implement Non-Fungible Tokens as part of a comprehensive protocol for land and property registry- extending the functionality to allow root ownership by a zone authority, delegation of "child" NFTs (representing regular property rights) as a subset of a root NFT, as well as to incorporate a fungible quantity variable to provide a delimiter for delegated tokens.

Specification

A DNFT contains five elements:

  1. A token ID. Every DNFT is identified by a unique unsigned 256-bit integer.

  2. An owner address. This can be either an externally owned account or another smart contract (ordinate).

  3. A metadata field. We specify a schema for deed files called ZML- Zone Markup Language.

  4. A height variable. This represents the level of delegation.

  5. A fungible unit of account (writs) which provide a delimiting factor on delegation.

A fungible unit of account is necessary so that zone implementors cannot delegate more land than what is under management.

The following is a diagram of an example DNFT zone implementation, with a delimiting number of writs and delegated from the root zone to four levels of abstraction.

Ordinates

DNFTs can be owned by other contracts, allowing for the creation of complex conditional agreements around property. In the Zone Protocol these are called ordinates. Ordinates can split ownership of a DNFT among multiple stakeholders using ERC20 tokens, and you can also create ordinates for things like lease agreements, rent contracts, property options and more.

image

Fungible Quantity Units (Writs)

DNFTs have a fungible quantity variable, which represents the amount of base geospace assigned to the property right. Writs are a two-dimensional unit of account (i.e. m^2). Alternatively a zone can opt to implement a three-dimensional unit of account (m^3) if desired. This means that a zone of 10000 m^2 containing 10000 writs at the base level could delegate (for example) 10 land leases, each with 1000 writs. It should be noted that writs are not meant to specify the actual boundaries; i.e. they do not have coordinates and are interchangeable. It is the associated deed file that contains all of the boundary info. Writs or cubits are simply a delimiting mechanism that describes the maximum amount of geospace that can be contained within the deed file.

Delegate and Revoke

There are two basic functional additions to ERC721: the ability to delegate and revoke. "Revoke" can be interceded by an ordinate contract which holds ownership of the DNFT between the leaser. This would prevent arbitrary revocations of property rights unless under pre-agreed terms (i.e. at the end of the term of a rent contract). For a freehold a similar ordinate would also be used on a permanent basis.

Proposed Interface

pragma solidity ^0.4.17;

/// @title DNFT Delegated Non-Fungible Token Standard

interface DNFT is ERC721 {

	/// @dev checks if _from is a delegate of _tokenId.
	function origin(uint256 _from, uint256 _tokenId) public view returns (bool);
	
	/// @dev gets the abstraction depth of _tokenId. 
	function getHeight(uint256 _tokenId) public view returns (uint256);
	
	/// @dev returns the balance of fungible geospace.
	function quantity(uint256 _tokenId) public view returns (uint256);
	
	/// @dev allows tokenholder to delegate new DNFT.
	function delegate(uint256 _tokenId, 
		uint256 _quantity, address _to) public;
	
	/// @dev allows owner to revoke a delegate NFT.
	function revoke(uint256 _tokenId, uint256 _delegate) public;

	/// @dev emitted whenever a new DNFT subdomain is delegated.
	event Delegate(uint256 _from, uint256 _tokenId, address indexed _owner);
	
	/// @dev emitted whenever an DNFT subdomain is revoked.
	event Revoke(uint256 _tokenId, uint256 _delegate);
}

origin:
Checks if the "from" tokenId is the child DNFT of tokenId. Returns bool.

getHeight:
Returns the delegation height of tokenId.

quantity:
Returns the number of fungible geospace units left to delegate.

delegate:
Allows the owner of a tokenId to delegate a new DNFT with a certain amount of geospace to a new owner.

revoke:
Allows the owner of a parent DNFT to revoke ownership of a child DNFT. This feature can be overridden by an ordinate contract.

Delegate (event):
Emitted for new token delegations.

Revoke (event):
Emitted on token revocations.

Rationale

The rationale of DNFTs is to provide object identities for physical property within zones.

Backwards Compatibility

DNFTs are compatible with ERC721 NFTs.

Implementation

Current working implementation as part of the Zone Protocol: https://github.com/Physes/DNFT.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions