Skip to content

feat(EVES-003): add EVM/ERC-721 token metadata support#59

Merged
flhps merged 14 commits into
mainfrom
feat/eves-003-evm-token-metadata-v2
Jul 17, 2026
Merged

feat(EVES-003): add EVM/ERC-721 token metadata support#59
flhps merged 14 commits into
mainfrom
feat/eves-003-evm-token-metadata-v2

Conversation

@flhps

@flhps flhps commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

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).

  • Add ERC-721/OpenSea metadata mapping table parallel to the existing TZIP-21 table, with background_color, contributors, and language rows
  • Add ERC-7572 contractURI() contract-level metadata subsection for EVM deployments
  • Recommend ERC-5192 (soulbound) and ERC-4906 (metadata update events) for template contracts
  • Generalize Steps 2, 4, and 5 to branch between Tezos and EVM token metadata flows
  • Add EVM contract identifier example (Etherlink L2) to Section 5 using EVES-007 URN schema
  • Create example/erc721_token_metadata.json with ENVITED-X brand background_color (111827)
  • Create erc721-schemas/erc721_token_metadata-schema.json (JSON Schema draft-07)
  • Add references [23]-[29] for OpenSea, ERC-4906, ERC-5192, ERC-721, ERC-7572, EVES-008, RFC 1766

Key design decisions

  • Cross-chain identity: 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 chain
  • Ontology attributes: Use full ontology IRI as trait_type and release URL as value (lossless mapping from TZIP-21 name/value, no duplicate trait_types)
  • RFC 2119 boilerplate: Moved to top of Specification section (keywords used throughout, not just Token Metadata)
  • JSON Schema fix: title moved inside asset definition to avoid draft-07 $ref sibling keyword bug
  • Additive change: Existing Tezos/TZIP-21 path is unchanged; all EVM support is additive

Depends on

Test plan

  • make lint passes (markdownlint + frontmatter validation)
  • make format-check passes (Prettier)
  • All pre-commit hooks pass (including Vale)
  • New JSON files parse correctly
  • erc721_token_metadata.json validates against erc721_token_metadata-schema.json
  • All reference links [1]-[29] are defined and used (no orphans)
  • No remaining e.g. in any EVES-003 file (spec, schemas, examples)

Closes #35

jdsika and others added 14 commits April 8, 2026 12:26
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.
@flhps
flhps merged commit 4b4487b into main Jul 17, 2026
8 checks passed
@flhps
flhps deleted the feat/eves-003-evm-token-metadata-v2 branch July 17, 2026 15:49
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

EVES-003 EVM token metadata

2 participants