What
The credential-nft contract stores metadata_uri as-is with no validation that it's a well-formed URI or non-empty. A credential could be minted with an empty or meaningless URI.
Why
Credentials with empty or invalid metadata URIs are useless to holders and can't be verified off-chain. Adding a basic validation prevents accidental misconfiguration and ensures every minted credential has meaningful metadata.
Scope
- Add a minimum length check on
metadata_uri (e.g., non-empty, minimum 8 characters)
- Consider basic URI format validation (starts with
http://, https://, or ipfs://)
- Add a test verifying rejection of empty/invalid URIs
Technical Context
- File:
contracts/credential-nft/src/mint.rs (line ~107)
metadata_uri is passed as a SorobanString and stored directly
Acceptance Criteria
What
The credential-nft contract stores
metadata_urias-is with no validation that it's a well-formed URI or non-empty. A credential could be minted with an empty or meaningless URI.Why
Credentials with empty or invalid metadata URIs are useless to holders and can't be verified off-chain. Adding a basic validation prevents accidental misconfiguration and ensures every minted credential has meaningful metadata.
Scope
metadata_uri(e.g., non-empty, minimum 8 characters)http://,https://, oripfs://)Technical Context
contracts/credential-nft/src/mint.rs(line ~107)metadata_uriis passed as aSorobanStringand stored directlyAcceptance Criteria
mint_credentialpanics whenmetadata_uriis emptymint_credentialpanics whenmetadata_uriis too short or malformed