feat(EVES-003): add EVM/ERC-721 token metadata support#46
Closed
jdsika wants to merge 84 commits into
Closed
Conversation
Signed-off-by: ClemensLinnhoff <clemens.linnhoff@partner.bmw.de>
Signed-off-by: ClemensLinnhoff <clemens.linnhoff@partner.bmw.de>
Signed-off-by: ClemensLinnhoff <clemens.linnhoff@partner.bmw.de>
Signed-off-by: ClemensLinnhoff <clemens.linnhoff@partner.bmw.de>
Signed-off-by: ClemensLinnhoff <clemens.linnhoff@partner.bmw.de>
Signed-off-by: ClemensLinnhoff <clemens.linnhoff@partner.bmw.de>
Signed-off-by: ClemensLinnhoff <clemens.linnhoff@partner.bmw.de>
Signed-off-by: ClemensLinnhoff <clemens.linnhoff@partner.bmw.de>
Signed-off-by: ClemensLinnhoff <clemens.linnhoff@partner.bmw.de>
Signed-off-by: ClemensLinnhoff <clemens.linnhoff@partner.bmw.de>
Signed-off-by: ClemensLinnhoff <clemens.linnhoff@partner.bmw.de>
Signed-off-by: ClemensLinnhoff <clemens.linnhoff@partner.bmw.de>
Signed-off-by: ClemensLinnhoff <clemens.linnhoff@partner.bmw.de>
Signed-off-by: ClemensLinnhoff <clemens.linnhoff@partner.bmw.de>
Signed-off-by: ClemensLinnhoff <clemens.linnhoff@partner.bmw.de>
Signed-off-by: ClemensLinnhoff <clemens.linnhoff@partner.bmw.de>
Signed-off-by: ClemensLinnhoff <clemens.linnhoff@partner.bmw.de>
Signed-off-by: ClemensLinnhoff <clemens.linnhoff@partner.bmw.de>
Signed-off-by: ClemensLinnhoff <clemens.linnhoff@partner.bmw.de>
Signed-off-by: ClemensLinnhoff <clemens.linnhoff@partner.bmw.de>
Signed-off-by: ClemensLinnhoff <clemens.linnhoff@partner.bmw.de>
Signed-off-by: ClemensLinnhoff <clemens.linnhoff@partner.bmw.de>
Signed-off-by: ClemensLinnhoff <clemens.linnhoff@partner.bmw.de>
Signed-off-by: ClemensLinnhoff <clemens.linnhoff@partner.bmw.de>
1 create template for specifications
Signed-off-by: ClemensLinnhoff <clemens.linnhoff@persival.de>
Signed-off-by: ClemensLinnhoff <clemens.linnhoff@persival.de>
…bsite Add gitbook workflow, readme and menu
Signed-off-by: Carlo van Driesten <carlo.van-driesten@bmw.de>
jdsika
force-pushed
the
feat/eves-003-evm-token-metadata-v2
branch
4 times, most recently
from
April 8, 2026 08:58
2e217ad to
b50a445
Compare
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>
jdsika
force-pushed
the
feat/eves-003-evm-token-metadata-v2
branch
from
April 8, 2026 10:26
b50a445 to
e1f2c88
Compare
…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>
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6.3.0 to 6.4.0. - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](actions/setup-node@53b8394...48b55a0) --- updated-dependencies: - dependency-name: actions/setup-node dependency-version: 6.4.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [prettier](https://github.com/prettier/prettier) from 3.8.1 to 3.8.3. - [Release notes](https://github.com/prettier/prettier/releases) - [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md) - [Commits](prettier/prettier@3.8.1...3.8.3) --- updated-dependencies: - dependency-name: prettier dependency-version: 3.8.3 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Carlo van Driesten <carlo.van-driesten@vdl.digital>
Bumps [actions/cache](https://github.com/actions/cache) from 5.0.4 to 5.0.5. - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](actions/cache@6682284...27d5ce7) --- updated-dependencies: - dependency-name: actions/cache dependency-version: 5.0.5 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Carlo van Driesten <carlo.van-driesten@vdl.digital>
…1.0 (#48) Bumps [DavidAnson/markdownlint-cli2-action](https://github.com/davidanson/markdownlint-cli2-action) from 23.0.0 to 23.1.0. - [Release notes](https://github.com/davidanson/markdownlint-cli2-action/releases) - [Commits](DavidAnson/markdownlint-cli2-action@ce4853d...6b51ade) --- updated-dependencies: - dependency-name: DavidAnson/markdownlint-cli2-action dependency-version: 23.1.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Carlo van Driesten <carlo.van-driesten@vdl.digital>
Bumps [markdownlint-cli](https://github.com/igorshubovych/markdownlint-cli) from 0.48.0 to 0.49.0. - [Release notes](https://github.com/igorshubovych/markdownlint-cli/releases) - [Commits](igorshubovych/markdownlint-cli@v0.48.0...v0.49.0) --- updated-dependencies: - dependency-name: markdownlint-cli dependency-version: 0.49.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [errata-ai/vale-action](https://github.com/errata-ai/vale-action) from 2.1.1 to 2.1.2. - [Release notes](https://github.com/errata-ai/vale-action/releases) - [Commits](vale-cli/vale-action@d89dee9...85f9f7f) --- updated-dependencies: - dependency-name: errata-ai/vale-action dependency-version: 2.1.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…2.0 (#53) Bumps [DavidAnson/markdownlint-cli2-action](https://github.com/davidanson/markdownlint-cli2-action) from 23.1.0 to 23.2.0. - [Release notes](https://github.com/davidanson/markdownlint-cli2-action/releases) - [Commits](DavidAnson/markdownlint-cli2-action@6b51ade...ded1f94) --- updated-dependencies: - dependency-name: DavidAnson/markdownlint-cli2-action dependency-version: 23.2.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [actions/cache](https://github.com/actions/cache) from 5.0.5 to 6.1.0. - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](actions/cache@27d5ce7...55cc834) --- updated-dependencies: - dependency-name: actions/cache dependency-version: 6.1.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [prettier](https://github.com/prettier/prettier) from 3.8.3 to 3.9.5. - [Release notes](https://github.com/prettier/prettier/releases) - [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md) - [Commits](prettier/prettier@3.8.3...3.9.5) --- updated-dependencies: - dependency-name: prettier dependency-version: 3.9.4 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.2 to 7.0.0. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](actions/checkout@de0fac2...9c091bb) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: 7.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…ce authorization (#38) * feat(EVES-009): new draft on evidence Signed-off-by: felix hoops <9974641+flhps@users.noreply.github.com> * fix(EVES-009): address implementation review findings Align spec with harbour-credentials and simpulse-id-credentials reference implementations based on cross-implementation review. Specification changes: - §2: Mandate canonical serialization (RFC 8785 or sorted-key no-whitespace JSON) for deterministic challenge hashing - §2: Allow zero-VC VPs (pure consent proofs where Holder DID binding alone demonstrates authorization) - §2: Support both nonce-based and OID4VP KB-JWT transaction_data_hashes binding mechanisms for challenge binding - §2: Allow multiple evidence items per VP via hash arrays - §4.2: Relax challenge binding check to accommodate OID4VP dual-binding (VP nonce for replay prevention + KB-JWT hashes for message binding) - §4.2: Add SD-JWT-specific verification requirements (sd_hash, disclosure hash validation per RFC 9901) - §4.2: Clarify VC requirement check is skipped for zero-VC VPs - §5: Add canonical serialization as a security consideration - §6: Add consent-only evidence privacy guidance for zero-VC VPs Style and references: - Fix gendered language: "He also provides" -> "The Requester also provides" - Fix "his wallet" -> "the Holder's wallet" - Fix "e.g., for example" -> "e.g.," - Fix typos: "derived form" -> "derived from", "credentail" -> "credential" - Update ref #8 from expired draft to RFC 9901 - Add RFC 8785 (JSON Canonicalization Scheme) as ref #9 - Add OID4VP Appendix B.3.3 as ref #10 - Update Implementation section: cite harbour-credentials and simpulse-id-credentials as existing reference implementations Signed-off-by: jdsika <carlo.van-driesten@vdl.digital> * fix(EVES-009): wrap long lines to comply with 300-char lint limit Signed-off-by: Carlo van Driesten <carlo.van-driesten@bmw.de> * refactor(EVES-009): split spec into generic evidence model and SD-JWT VC profile Restructure the specification into two clearly labeled layers: a generic, technology-agnostic evidence model (sections 1-3) and a concrete profile for VPs of SD-JWT VCs in dc+sd-jwt format (sections 4-6). Remove the unimplemented transaction_data dual-binding mechanism; the profile now specifies the actual binding used in practice (challenge in the KB-JWT key-binding nonce). Keep transaction_data as a non-normative future-work note. Loosen the RFC 8785 canonicalization MUST to a SHOULD scoped to JSON messages, since the message format is intentionally not standardized by this spec. Signed-off-by: felix hoops <9974641+flhps@users.noreply.github.com> Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * refactor(EVES-009): slim to generic evidence concept and thin VP core Keep EVES-009 high-level: the generic evidence model plus the minimal VP-based realization (challenge in the KB-JWT key-binding nonce, driven by the constraint that wallets only sign KB-JWTs). Add the hash-as-received principle, a multi-action commitment hook in the generic model, a key rotation security consideration, and a derived-artifact escape hatch in the verification section. Issuance-specific detail moves to EVES-010. Signed-off-by: felix hoops <9974641+flhps@users.noreply.github.com> Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * feat(EVES-010): new draft on credential issuance authorization via embedded evidence Specify how an organization authorizes the issuance of one or more credentials with a single wallet signature (EVES-009 evidence over a message committing to a batch Merkle root) and how each issued credential embeds a self-contained authorization record in its evidence field. Defines the authorization message grammar, the embedded evidence structure, and the two-tier verification model (intake vs. downstream). Matches the mechanism implemented in harbour-credentials. Signed-off-by: felix hoops <9974641+flhps@users.noreply.github.com> Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * chore(EVES-009): promote EVES-009 and EVES-010 to Review status Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * fix(EVES-009/EVES-010): address review findings - Cite SD-JWT VC (draft-ietf-oauth-sd-jwt-vc) for dc+sd-jwt; correct the RFC 9901 reference title to Selective Disclosure for JSON Web Tokens - Replace the dead Harbour spec file link with the harbour-credentials repository as reference implementation - Pin lowercase hexadecimal challenge encoding in the EVES-009 profile - Add trusted-display security consideration (message shown by Requester, not wallet) and fix the EVES-010 flow step that claimed otherwise - Remove zero-VC VPs; consent-only interactions present a minimal identity credential via a normal OID4VP interaction - Anchor KB-JWT iat at intake (clock skew + key currency checks) and document the residual trust in the Signing Service - Add downstream batch size consistency check bounding merkleProof length by ceil(log2(N)) and document the understatement risk - Align README status with frontmatter (Review) and resolve all Vale errors and warnings in both specs Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Signed-off-by: felix hoops <9974641+flhps@users.noreply.github.com> 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: Claude Fable 5 <noreply@anthropic.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. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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. Co-Authored-By: Claude Fable 5 <noreply@anthropic.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