Provenance Claims
Provenance claims are assertions by a specific user that s/he created a specific piece of content, identified by a hash. These assertions can be backed by a registrar.
The ProvenanceClaim
struct
Provenance claims are stored in ProvenanceClaim
structs 🔗:
Field | Type | Meaning |
---|---|---|
originatorId | uint256 | Royal ID of the originator, the user who created the content which this ProvenanceClaim represents. |
registrarId | uint256 | Royal ID of the registrar, the user who registered this ProvenanceClaim on behalf of the originator. |
contentHash | bytes32 | Blake3 🔗 hash of the content which this ProvenanceClaim represents. |
nftContract | address | NFT contract of the associated NFT of this ProvenanceClaim (optional). |
nftTokenId | uint256 | Token ID of the NFT associated with this ProvenanceClaim (optional). |
blockNumber | uint256 | Block in which this content was registered.1 |
(1) Offchain you can always get this information by looking at events, but having the block number facilitates faster access, as well as access onchain.
Contracts
- Registry:
ProvenanceRegistry
- Gateway (authorization logic):
ProvenanceGateway
Control and data flows
- Register your own content directly
- Register content through a registrar
- Assign an NFT for your provenance claim
- Assign an NFT for a provenance claim through a registrar
Why have an NFT?
Having an NFT attached to a provenance claim is not required. However, there are some benefits to having such an NFT.
- An NFT can include a visual representation of the governance claim.
- NFT metadata can improve the ability to discover and display the claim.
- NFTs can be tradeable. The provenance claim can preserve the identity of the original creator, while the current owner of the NFT can have it as a collectible. It is also possible to have certain licensed rights attached to the NFT’s owner.
Queries
There are several ways to get a provenance claim’s data onchain.
- Query by originator Royal ID and content hash
- Query by NFT (which requires the NFT contract address and the NFT’s token ID)
- Query by provenance claim Id
Query by | Function | Base | Base Sepolia |
---|---|---|---|
NFT (token and contract address) | provenanceClaimOfNftToken(address nftContract, uint256 nftTokenId) 🔗 | 🔗 | 🔗 |
originator and contract hash | provenanceClaimOfOriginatorAndHash(uint256 originatorId, bytes32 contentHash) 🔗 | 🔗 | 🔗 |
provenance claim ID | provenanceClaim(uint256 id) 🔗 | 🔗 | 🔗 |