The primary object in Yakoa's data structure
What is an Asset
?
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 multipleTokens
. 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 multipleAssets
. Collections can update their URIs at any time, so atoken
can have many assets over its lifecycle, as often happens with generative NFTs. Assets
can exist apart fromTokens
.Assets
can be posted to the blockchain at any time via IPFS directories or other Merkle roots. Often, theseAssets
reference unreleasedTokens
, but they are still part of the blockchain and can be used to demonstrate anAsset
's first use.
The Asset
model
Asset
model{
"hash": String,
"contracts": List[AssetContract]
}
An Asset
consists of a unique hash
identifier, and a list of AssetContracts
.
The AssetContract
model
AssetContract
modelAsset
↔Token
relationships are captured in the AssetContract
model:
{
"address": String,
"chain": String,
"provenanceBlock": Integer,
"tokens": List[Integer]
}
- The
chain
andaddress
fields uniquely identify the contract - The
tokens
field is a list of one or more tokens identifiers on the contract that reference theAsset
. - 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.