The primary object in Yakoa's data structure

What is an Asset?

Yakoa's API responses revolve around Asset objects: digital works that can be traced back to the blockchain, often as image-based NFTs.

Yakoa keeps track of an Asset separately from a Token. This is an important distinction:

  • A single Asset can be stored across multiple Tokens. This often happens with popular NFT collections with exact replicas of their artwork referenced by many different NFTs, or with placeholder assets that a collection uses for unreleased tokens.
  • A single Token can reference multiple Assets. Collections can update their URIs at any time, so a token can have many assets over its lifecycle, as often happens with generative NFTs.
  • Assets can exist apart from Tokens. Assets can be posted to the blockchain at any time via IPFS directories or other Merkle roots. Often, these Assets reference unreleased Tokens, but they are still part of the blockchain and can be used to demonstrate an Asset's first use.

The Asset model

{
  "hash": String,
  "contracts": List[AssetContract]
}

An Asset consists of a unique hash identifier, and a list of AssetContracts.

The AssetContract model

AssetToken relationships are captured in the AssetContract model:

{
  "address": String,
  "chain": String,
  "provenanceBlock": Integer,
  "tokens": List[Integer]
}
  • The chain and address fields uniquely identify the contract
  • The tokens field is a list of one or more tokens identifiers on the contract that reference the Asset.
  • The provenanceBlock field is the earliest point on the chain that the contract recorded its first use of an asset.

Asset Provenance

There are many ways for an on-chain contract to create a provable reference to one or more Assets. Here are a few common methods:

  • Embedding a Merkle root in its token URI, such as an IPFS URI.
  • Embedding a Merkle root in a custom field of the contract.
  • Embedding a data hash or Merkle root in an asset's metadata.
  • Storing raw asset data on the chain.

Yakoa parses through these many data formats to certify the first time each contract references an asset - this is called the Asset Provenance.

Where Yakoa can provably trace an asset back to the chain, an Asset's first use is included in the provenanceBlock for each contract. If there is no provable path from the chain to the asset data, then provenanceBlock is listed as NULL.

If multiple contracts reference the same Asset, then, according to the blockchain, the contract with the earliest listed provenanceBlock should be the original use of the asset.

Recommended use

Yakoa's API can be used to search for infringing works and other derivatives across every asset in its database.

This can be especially useful in real-time certification scenarios with recently-minted NFTs, where the order in which assets are first referenced on the blockchain might be challenging to ascertain.

Since provenance scores are certified against the blockchain, they provide a no-later-than timestamp for when an asset was published to each contract. They consider a variety of publication methods and are independently verifiable.