Implement the functions of the Interface IERC3525Metadata of the EIP-3525.
EIP-3525 metadata extensions are compatible EIP-721 metadata extensions.
The IERC3525Metadata interface extension is OPTIONAL.
The list of functions are :
contractURI
slotURI
JSON Schema
This is the “EIP-3525 Metadata JSON Schema for contractURI()” referenced above.
{
"title": "Contract Metadata",
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Contract Name"
},
"description": {
"type": "string",
"description": "Describes the contract"
},
"image": {
"type": "string",
"description": "Optional. Either a base64 encoded imgae data or a URI pointing to a resource with mime type image/* representing what this contract represents."
},
"external_link": {
"type": "string",
"description": "Optional. A URI pointing to an external resource."
},
"valueDecimals": {
"type": "integer",
"description": "The number of decimal places that the balance should display - e.g. 18, means to divide the token value by 1000000000000000000 to get its user representation."
}
}
}
This is the “EIP-3525 Metadata JSON Schema for slotURI(uint)” referenced above.
{
"title": "Slot Metadata",
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Identifies the asset category to which this slot represents"
},
"description": {
"type": "string",
"description": "Describes the asset category to which this slot represents"
},
"image": {
"type": "string",
"description": "Optional. Either a base64 encoded imgae data or a URI pointing to a resource with mime type image/* representing the asset category to which this slot represents."
},
"properties": {
"type": "array",
"description": "Each item of `properties` SHOULD be organized in object format, including name, description, value, order (optional), display_type (optional), etc."
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The name of this property."
},
"description": {
"type": "string",
"description": "Describes this property."
}
"value": {
"description": "The value of this property, which may be a string or a number."
},
"is_intrinsic": {
"type": "boolean",
"description": "According to the definition of `slot`, one of the best practice to generate the value of a slot is utilizing the `keccak256` algorithm to calculate the hash value of multi properties. In this scenario, the `properties` field should contain all the properties that are used to calculate the value of `slot`, and if a property is used in the calculation, is_intrinsic must be TRUE."
},
"order": {
"type": "integer",
"description": "Optional, related to the value of is_intrinsic. If is_intrinsic is TRUE, it must be the order of this property appeared in the calculation method of the slot."
},
"display_type": {
"type": "string",
"description": "Optional. Specifies in what form this property should be displayed."
}
}
}
}
}
}
This is the “EIP-3525 Metadata JSON Schema for tokenURI(uint)” referenced above.
{
"title": "Token Metadata",
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Identifies the asset to which this token represents"
},
"description": {
"type": "string",
"description": "Describes the asset to which this token represents"
},
"image": {
"type": "string",
"description": "Either a base64 encoded imgae data or a URI pointing to a resource with mime type image/* representing the asset to which this token represents."
},
"balance": {
"type": "integer",
"description": "THe value held by this token."
},
"slot": {
"type": "integer",
"description": "The id of the slot that this token belongs to."
},
"properties": {
"type": "object",
"description": "Arbitrary properties. Values may be strings, numbers, objects or arrays. Optional, you can use the same schema as the properties section of EIP-3525 Metadata JSON Schema for slotURI(uint) if you need a better description attribute."
}
}
}
Acceptance Criteria
[ ] Implement the contents of each functions and events
[ ] Implement unit tests for each functions
[ ] Implement integration tests for each functions
[ ] If needed, write the documentation associated with the functions and events exposed
Description
Implement the functions of the Interface
IERC3525Metadata
of the EIP-3525. EIP-3525 metadata extensions are compatible EIP-721 metadata extensions.The
IERC3525Metadata
interface extension is OPTIONAL.The list of functions are :
contractURI
slotURI
JSON Schema
This is the “EIP-3525 Metadata JSON Schema for contractURI()” referenced above.
This is the “EIP-3525 Metadata JSON Schema for slotURI(uint)” referenced above.
This is the “EIP-3525 Metadata JSON Schema for tokenURI(uint)” referenced above.
Acceptance Criteria