feat(EVES-003): add EVM/ERC-721 token metadata support#59
Merged
Conversation
Extend EVES-003 to support EVM chains alongside the existing Tezos/TZIP-21 token metadata path, enabling minting simulation asset NFTs as ERC-721 tokens on Ethereum-compatible chains such as Etherlink L2, as anticipated by EVES-006 and EVES-007. Spec text (eves-003.md): - Add EVES-007 and EVES-008 to requires frontmatter - Add RFC 2119 boilerplate at top of Specification section - Add [29] RFC 1766 reference for language field - Generalize abstract to reference both TZIP-21 and ERC-721 - Branch Steps 2, 4, and 5 for chain-specific token metadata files - Add EVM contract identifier (Etherlink L2) to Section 5 - Restructure into parent "6. Token Metadata" section with subsections for TZIP-21 (Tezos) and ERC-721 (EVM) - Add ERC-721/OpenSea metadata mapping table with background_color, contributors, and language rows - Add language row to TZIP-21 mapping table (backed by TZIP-21 spec) - Clarify did:ethr as cross-chain organizational identity (EVES-008) - Add ERC-7572 contract-level metadata subsection - Recommend ERC-5192 for soulbound tokens, ERC-4906 for metadata update events - Fix ontology property paths to match current SHACL shapes - Migrate ontology IRIs to w3id.org (envited-x/v3, manifest/v5, hdmap/v6) Schemas: - Fix JSON Schema draft-07 $ref sibling bug (move title into asset definition) in both schemas - Replace "e.g." with "for example" in all schema descriptions - New erc721_token_metadata-schema.json (JSON Schema draft-07) - TZIP-21: add required ["name"], update minter to DID per EVES-008, fix RFC 1776 → RFC 1766 Examples: - New erc721_token_metadata.json with background_color "111827", ontology IRIs as trait_type (lossless mapping) - TZIP-21: update minter to did:ethr per EVES-008, migrate ontology IRIs - Manifest: fix @context to array-style, update gx namespace, fix hasLicense structure per manifest SHACL Closes #35 Signed-off-by: jdsika <carlo.van-driesten@vdl.digital>
…HACL CI - Rewrite envited-x_manifest.json to use compact JSON-LD form with context URLs (envited-x/v3/, manifest/v5/) instead of verbose @value/@type typed literals that fail SHACL validation - Use envited-x:Manifest type with envited-x:* categories and access roles per envited-x:ManifestShape constraints - Add required iri field on hasLicense per LicenseLinkReferenceShape - Add shacl_validation.yml CI workflow using ontology-management-base --remote flag for HTTP-based ontology resolution Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: Carlo van Driesten <carlo.van-driesten@bmw.de>
- Add §1a Asset Lifecycle Overview with three-stage pipeline diagram (Preparation → Packaging → Publication) and example file table - Harmonize input_manifest.json to use same JSON-LD style as envited-x_manifest.json (context URLs, manifest:Link wrappers) - Update inline §1b code snippet to match the actual file - Add cross-references: §1b ↔ §4 Step 1, §4 Step 2 → §6 Token Metadata - Add stage labels to example file references throughout the spec - Note zip version skew (v2/v4 inside zip vs v3/v5 standalone) - Document input_manifest.json CI exclusion (partial Stage 1 format) - Add iri enrichment step to pipeline description Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: Carlo van Driesten <carlo.van-driesten@bmw.de>
- Shorten Stage 2 description to stay within 300-char line limit - Apply prettier formatting to eves-003.md Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: Carlo van Driesten <carlo.van-driesten@bmw.de>
- Add missing 'name' property definition to TZIP-21 schema (was required but undefined, allowing any type) - Fix grammar in ERC-721 schema: 'to which this NFT represents' -> 'that this NFT represents' - Add normative tag-to-attribute mapping table defining canonical trait_type names for the 6 static TZIP-21 tags - Fix wrong reference [21] for hdmap SHACL shapes (was pointing to envited-x ontology); add new [30] for HD-Map Ontology - Normalize EVES-007 references to reference-link style [31] - Add empty 'contributors' array to ERC-721 example for completeness Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
JSON parsers keep only the last occurrence of a duplicated key, so the first publishers array was dead content that schema validation could not detect.
The ENVITED-X Data Space no longer uses Tezos. Remove the TZIP-21 metadata mapping, example, schema, and all Tezos branches from the upload and synchronization process. ERC-721 is now the only token metadata format. Since this specification and its deployments are still drafts, no backwards compatibility with previously minted Tezos assets is maintained.
The registration mechanism is being redesigned around an evidence-based listing registry (signed authorization evidence from an SSI wallet, token minted to the registry contract, on-chain hash binding). Keep the metadata field mappings normative while flagging the registration and minting flow as subject to change.
The minter field lives in the off-chain metadata JSON and names the organization's did:ethr independently of the transaction sender. ERC-1056 DID document entries (added signing keys) exist only as events, which contracts cannot read, so matching the claimed DID against the authorization evidence must happen off-chain at read time.
Replace the open-issue callouts on metadata registration and minter verification with normative prose. The point at which tokens and the claimed minter identity are verified against a root of trust remains open and is tracked under Future Improvements.
The feat/http-artifact-resolution branch (merged as #57) now has a dangling service-characteristics submodule pointer, which breaks pip install during the SHACL validation job.
The IDS knowledgebase page returns 404 since the protocol moved to Eclipse stewardship; point to the IDSA specification repository instead.
ClemensLinnhoff
pushed a commit
that referenced
this pull request
Jul 17, 2026
* feat(EVES-003): add EVM/ERC-721 token metadata support Extend EVES-003 to support EVM chains alongside the existing Tezos/TZIP-21 token metadata path, enabling minting simulation asset NFTs as ERC-721 tokens on Ethereum-compatible chains such as Etherlink L2, as anticipated by EVES-006 and EVES-007. Spec text (eves-003.md): - Add EVES-007 and EVES-008 to requires frontmatter - Add RFC 2119 boilerplate at top of Specification section - Add [29] RFC 1766 reference for language field - Generalize abstract to reference both TZIP-21 and ERC-721 - Branch Steps 2, 4, and 5 for chain-specific token metadata files - Add EVM contract identifier (Etherlink L2) to Section 5 - Restructure into parent "6. Token Metadata" section with subsections for TZIP-21 (Tezos) and ERC-721 (EVM) - Add ERC-721/OpenSea metadata mapping table with background_color, contributors, and language rows - Add language row to TZIP-21 mapping table (backed by TZIP-21 spec) - Clarify did:ethr as cross-chain organizational identity (EVES-008) - Add ERC-7572 contract-level metadata subsection - Recommend ERC-5192 for soulbound tokens, ERC-4906 for metadata update events - Fix ontology property paths to match current SHACL shapes - Migrate ontology IRIs to w3id.org (envited-x/v3, manifest/v5, hdmap/v6) Schemas: - Fix JSON Schema draft-07 $ref sibling bug (move title into asset definition) in both schemas - Replace "e.g." with "for example" in all schema descriptions - New erc721_token_metadata-schema.json (JSON Schema draft-07) - TZIP-21: add required ["name"], update minter to DID per EVES-008, fix RFC 1776 → RFC 1766 Examples: - New erc721_token_metadata.json with background_color "111827", ontology IRIs as trait_type (lossless mapping) - TZIP-21: update minter to did:ethr per EVES-008, migrate ontology IRIs - Manifest: fix @context to array-style, update gx namespace, fix hasLicense structure per manifest SHACL Closes #35 Signed-off-by: jdsika <carlo.van-driesten@vdl.digital> * fix(eves-003): migrate manifest to envited-x:Manifest v3/v5 and add SHACL CI - Rewrite envited-x_manifest.json to use compact JSON-LD form with context URLs (envited-x/v3/, manifest/v5/) instead of verbose @value/@type typed literals that fail SHACL validation - Use envited-x:Manifest type with envited-x:* categories and access roles per envited-x:ManifestShape constraints - Add required iri field on hasLicense per LicenseLinkReferenceShape - Add shacl_validation.yml CI workflow using ontology-management-base --remote flag for HTTP-based ontology resolution Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: Carlo van Driesten <carlo.van-driesten@bmw.de> * docs(eves-003): add pipeline overview and harmonize example files - Add §1a Asset Lifecycle Overview with three-stage pipeline diagram (Preparation → Packaging → Publication) and example file table - Harmonize input_manifest.json to use same JSON-LD style as envited-x_manifest.json (context URLs, manifest:Link wrappers) - Update inline §1b code snippet to match the actual file - Add cross-references: §1b ↔ §4 Step 1, §4 Step 2 → §6 Token Metadata - Add stage labels to example file references throughout the spec - Note zip version skew (v2/v4 inside zip vs v3/v5 standalone) - Document input_manifest.json CI exclusion (partial Stage 1 format) - Add iri enrichment step to pipeline description Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: Carlo van Driesten <carlo.van-driesten@bmw.de> * fix(eves-003): resolve markdown lint and prettier formatting issues - Shorten Stage 2 description to stay within 300-char line limit - Apply prettier formatting to eves-003.md Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: Carlo van Driesten <carlo.van-driesten@bmw.de> * fix(EVES-003): address audit findings for EVM token metadata PR - Add missing 'name' property definition to TZIP-21 schema (was required but undefined, allowing any type) - Fix grammar in ERC-721 schema: 'to which this NFT represents' -> 'that this NFT represents' - Add normative tag-to-attribute mapping table defining canonical trait_type names for the 6 static TZIP-21 tags - Fix wrong reference [21] for hdmap SHACL shapes (was pointing to envited-x ontology); add new [30] for HD-Map Ontology - Normalize EVES-007 references to reference-link style [31] - Add empty 'contributors' array to ERC-721 example for completeness Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix(EVES-003): remove duplicate publishers key in ERC-721 example JSON parsers keep only the last occurrence of a duplicated key, so the first publishers array was dead content that schema validation could not detect. * refactor(EVES-003): remove Tezos/TZIP-21 token metadata path The ENVITED-X Data Space no longer uses Tezos. Remove the TZIP-21 metadata mapping, example, schema, and all Tezos branches from the upload and synchronization process. ERC-721 is now the only token metadata format. Since this specification and its deployments are still drafts, no backwards compatibility with previously minted Tezos assets is maintained. * docs(EVES-003): mark on-chain metadata registration as an open issue The registration mechanism is being redesigned around an evidence-based listing registry (signed authorization evidence from an SSI wallet, token minted to the registry contract, on-chain hash binding). Keep the metadata field mappings normative while flagging the registration and minting flow as subject to change. * docs(EVES-003): explain why the minter DID cannot be verified on-chain The minter field lives in the off-chain metadata JSON and names the organization's did:ethr independently of the transaction sender. ERC-1056 DID document entries (added signing keys) exist only as events, which contracts cannot read, so matching the claimed DID against the authorization evidence must happen off-chain at read time. * docs(EVES-003): finalize token registration wording for merge Replace the open-issue callouts on metadata registration and minter verification with normative prose. The point at which tokens and the claimed minter identity are verified against a root of trust remains open and is tracked under Future Improvements. * ci(shacl): install ontology-management-base from main The feat/http-artifact-resolution branch (merged as #57) now has a dangling service-characteristics submodule pointer, which breaks pip install during the SHACL validation job. * fix(EVES-005): replace dead Dataspace Protocol knowledgebase link The IDS knowledgebase page returns 404 since the protocol moved to Eclipse stewardship; point to the IDSA specification repository instead. --------- Signed-off-by: jdsika <carlo.van-driesten@vdl.digital> Signed-off-by: Carlo van Driesten <carlo.van-driesten@bmw.de> Co-authored-by: jdsika <carlo.van-driesten@vdl.digital> Co-authored-by: Carlo van Driesten <carlo.van-driesten@bmw.de> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Extends EVES-003 to support EVM chains alongside the existing Tezos/TZIP-21 token metadata path, enabling minting simulation asset NFTs as ERC-721 tokens on Ethereum-compatible chains (for example, Etherlink L2).
background_color,contributors, andlanguagerowscontractURI()contract-level metadata subsection for EVM deploymentsexample/erc721_token_metadata.jsonwith ENVITED-X brandbackground_color(111827)erc721-schemas/erc721_token_metadata-schema.json(JSON Schema draft-07)Key design decisions
did:ethr(anchored on Base per EVES-008) is used as the minter DID for both Tezos and EVM tokens — it identifies the organization, not the minting chaintrait_typeand release URL asvalue(lossless mapping from TZIP-21name/value, no duplicate trait_types)titlemoved insideassetdefinition to avoid draft-07$refsibling keyword bugDepends on
fix/ci-and-lint-cleanupas base branchTest plan
make lintpasses (markdownlint + frontmatter validation)make format-checkpasses (Prettier)erc721_token_metadata.jsonvalidates againsterc721_token_metadata-schema.jsone.g.in any EVES-003 file (spec, schemas, examples)Closes #35