
UAL: A Unique Identifier and Decentralized URL for Products
GEDITOKThe Problem: Uniquely Identifying Without Imposing an Operational "Straitjacket"
In the DPP ecosystem, a common recommendation is GS1 Digital Link, a standard for expressing GS1 identifiers (like GTIN) within a URL, enabling a 2D code (QR, DataMatrix) to connect a product with online information. (gs1.org)
GEDITOK supports GS1 Digital Link when necessary or desirable. But, in practice, there are many cases where:
- the company is not associated with GS1;
- the company is associated, but does not need (or cannot justify) creating a GTIN for every variant, component, batch, or unit;
- the cost, internal operations, or catalog structure makes GTIN useful "at the commercial level", but not the best vehicle for the level of granularity and events required by modern traceability.
And yet, these companies still need something essential: a unique identifier and a unique link for the product, that any user can scan on a QR and that leads, unequivocally and transparently, to all the characteristics and history of the product.
GEDITOK's Proposal: UAL (Universal Asset Link)
To fill this gap, at GEDITOK we have developed a public proposal called UAL (Universal Asset Link): a standardized way to compose URLs that identify products (and, especially, specific units) relying on cryptographic identifiers native to blockchain, avoiding dependence on a central organization.
The proposal can be consulted here (public repository for forks and contributions):
https://github.com/geditok/UAL/blob/main/README_ES.md
The central idea is simple:
-
A product (or unit) is represented as an asset anchored to a blockchain (EVM, Solana, Polkadot, Cosmos, etc.).
-
That asset has native identifiers (contract, tokenId, mint, etc.).
-
The UAL URL includes what's necessary to:
- know which network it's on,
- know which asset it is,
- and who resolves it (which domain returns the information).
What Does "Resolving" Mean and Why Does It Matter?
A UAL URL always points to a resolver: an HTTPS domain that, upon receiving the URL, returns product information.
- For humans: a web page (HTML) with the product sheet and history.
- For systems: JSON or JSON-LD (structured data).
This allows the same URL to be useful for:
- consumers,
- distributors,
- repair technicians,
- auditors,
- and authorities (when applicable).
UAL Nomenclature Explained in 30 Seconds
The base form is:
https://{resolver-domain}/ual/v1/{caip2}/{assetRef}
1) https://{resolver-domain}
- Always HTTPS for security and trust.
{resolver-domain}is the domain of the service that "translates" the on-chain identity to readable information.
2) /ual/v1/
- Identifies the standard (ual) and its version (v1).
- So, if there are incompatible improvements in the future,
/ual/v2/can exist without breaking the previous one.
3) {caip2}: Network Identifier (Multi-Chain)
For the URL to work across multiple blockchains, UAL uses network identifiers in CAIP-2 format, which follow the pattern namespace:reference. For example, in EVM the namespace eip155 is used with the chainId as reference. (GitHub)
Examples:
eip155:1→ Ethereum mainneteip155:11155111→ Sepolia
4) {assetRef}: Asset Reference (Which Product/Unit It Is)
This is where UAL identifies the product or unit.
EVM Case (Very Common): Contract + tokenId (NFT)
UAL defines a pragmatic branch for NFTs in EVM:
-
ERC-721:
nft/erc721/{contractAddress}/{tokenId} -
ERC-1155:
nft/erc1155/{contractAddress}/{tokenId}
Thus, a specific unit is identified by:
- the smart contract (address), and
- the tokenId (integer).
Non-EVM Case (or Complex Cases): CAIP-19 Escape Hatch
Not all networks have the same "contract + tokenId" model. To keep UAL truly multi-chain, there is a generic form based on CAIP-19:
asset/{caip19}
This allows representing assets from other ecosystems without "forcing" an EVM mold.
A Real Example: Identifying a tokenId on Sepolia
Suppose a product tokenized as an ERC-721 NFT on Sepolia, with tokenId 1234:
https://resolver.geditok.eu/ual/v1/eip155:11155111/nft/erc721/0xAbCDEF0123456789aBCdef0123456789ABCDef01/1234
What does this guarantee you?
- Which network:
eip155:11155111(Sepolia) - Which asset:
nft/erc721/…/1234 - Who resolves it:
resolver.geditok.eu - Which standard version:
ual/v1
This way, the QR printed on a product can lead to an unequivocal, verifiable, and traceable product sheet.
"Granularity: Item" and Schema.org: Speaking the Language of Consumers (and Search Engines)
When we talk about units (granularity item), it's not enough to identify the asset: it's important to describe it with widely adopted semantics. That's why, in UAL, we propose that for granularity=item, the resolver can include fields from Schema.org IndividualProduct, which precisely describes an identifiable individual instance (for example, by serial number). (schema.org)
This allows:
- the information to be interoperable,
- integrators to understand it quickly,
- and you to map to a product "passport" with standard fields (brand, manufacturer, serial, dates, etc.).
Conclusion: An Open Standard to Expand Traceability, Not to Replace What Already Works
UAL does not aim to "combat" GS1 Digital Link. GS1 Digital Link is valuable in many contexts, and in fact is a formal standard for bringing GS1 identifiers to the web. (gs1.org)
UAL was born for an equally real scenario: companies that want (or need) advanced traceability and unique URLs without necessarily depending on GTIN or affiliations that don't fit their operations. And, above all, to leverage that blockchains already provide a cryptographic, global identification system resistant to single points of failure.
If you're interested in reviewing, implementing, or improving the proposal, the repository is open for contributions:
https://github.com/geditok/UAL/blob/main/README_ES.md