Skip to content

Commit

Permalink
Upgrade to docusaurus v3
Browse files Browse the repository at this point in the history
  • Loading branch information
webbushka committed Nov 16, 2023
1 parent 4e5b2cb commit 46d398b
Show file tree
Hide file tree
Showing 19 changed files with 3,841 additions and 1,896 deletions.
Original file line number Diff line number Diff line change
@@ -1,27 +1,23 @@
# Financial NFTs
# Financial NFTs

Single-asset NFTs are represented on Provenance Blockchain using the [Metadata module](https://developer.provenance.io/docs/modules/metadata-module).

The Metadata module was designed to work in conjunction with Provenance Blockchain’s [Client Execution Environment](https://developer.provenance.io/docs/pb/p8e/overview) (CEE), whose purpose is to control and reason about asset-specific data off-chain while using the blockchain for recording an immutable history of the asset data and metadata on-chain. This powerful capability provides data privacy for Personally Identifying Information (PII) and other Non-Public Information (NPI).

Usage of the CEE is an optional extension to the Provenance Blockchain, and asset NFTs may be minted directly on-chain without using the CEE.


## Anatomy of an NFT
## Anatomy of an NFT

An NFT on Provenance Blockchain is defined by the [Scope](https://developer.provenance.io/docs/modules/metadata-module#scope-data-structures) data structure.

![nft](/img/learn/asset-lifecycle/nft.png)

<br/>
<br />

Two unique aspects of Provenance NFTs include:



* **Extensible Record Container **- Multiple data records can be associated with a Provenance NFT, including individual record evolution and permissioning.
* **Multi-party Ownership** - allowing a distinction between the Value Owner of an NFT, the party entitled to the financial value of the asset, and one or more Data Owners who may have the right or obligation to maintain the data backing the NFT. This nuance allows NFTs to have multiple participants in the roles of investors, controllers, and servicers, for example. Further parties can be permissioned with read-only data access, for example granting data viewing to another party or dApp, such as an exchange.

- **Extensible Record Container**- Multiple data records can be associated with a Provenance NFT, including individual record evolution and permissioning.
- **Multi-party Ownership** - allowing a distinction between the Value Owner of an NFT, the party entitled to the financial value of the asset, and one or more Data Owners who may have the right or obligation to maintain the data backing the NFT. This nuance allows NFTs to have multiple participants in the roles of investors, controllers, and servicers, for example. Further parties can be permissioned with read-only data access, for example granting data viewing to another party or dApp, such as an exchange.

## Data Privacy

Expand All @@ -33,51 +29,60 @@ Provenance Blockchain’s NFT structure allows one to record not only the finger

Having all these hashes recorded on the blockchain for the NFT can allow anyone to later prove exactly what the data was, how it mutated, and what code was executed to change the NFT data, without disclosing the data publicly.

<br/>
<br />

![nft](/img/learn/asset-lifecycle/cee.png)



The CEE is particularly powerful when contract execution involves multiple parties that may prefer verification of truth over trust (ie. parties no longer require explicit trust or third-party participation to ensure trust). During the contract execution, each party’s CEE can independently verify that the copy of the data it holds matches the hash of the data last recorded on-chain. If the hashes don’t match what is on the blockchain, the contract execution will fail.


## Data Structures



On the Provenance Blockchain, data structures are encoded as [Google Protocol Buffers](https://developers.google.com/protocol-buffers). The onboarding API consumes a generic `Asset` protobuf, which can contain any type of NFT or digital asset. The components parts of the `Asset` are:



<table>
<tr>
<td><code>id</code>
</td>
<td>An unique identifier in the <a href="https://en.wikipedia.org/wiki/Universally_unique_identifier#:~:text=A%20universally%20unique%20identifier%20(UUID,%2C%20for%20practical%20purposes%2C%20unique.">UUID format</a>
</td>
<td>
<code>id</code>
</td>
<td>
An unique identifier in the{' '}
<a href="https://en.wikipedia.org/wiki/Universally_unique_identifier#:~:text=A%20universally%20unique%20identifier%20(UUID,%2C%20for%20practical%20purposes%2C%20unique.">
UUID format
</a>
</td>
</tr>
<tr>
<td><code>type</code>
</td>
<td>A broadly-generic “type” of the asset, such as “LOAN”, “FUND”, or “TITLE”. This field is typically used to identify the type of asset to Provenance-based applications.
</td>
<td>
<code>type</code>
</td>
<td>
A broadly-generic “type” of the asset, such as “LOAN”, “FUND”, or “TITLE”.
This field is typically used to identify the type of asset to
Provenance-based applications.
</td>
</tr>
<tr>
<td><code>description</code>
</td>
<td>A brief description of the asset
</td>
<td>
<code>description</code>
</td>
<td>A brief description of the asset</td>
</tr>
<tr>
<td><code>key-value map</code>
</td>
<td>A dictionary of string-value pairs, mapping a field name to its data value. The data value is encoded as a <a href="https://developers.google.com/protocol-buffers/docs/proto3#any">protobuf Any</a>, allowing for any type of data structure.
</td>
<td>
<code>key-value map</code>
</td>
<td>
A dictionary of string-value pairs, mapping a field name to its data
value. The data value is encoded as a{' '}
<a href="https://developers.google.com/protocol-buffers/docs/proto3#any">
protobuf Any
</a>
, allowing for any type of data structure.
</td>
</tr>
</table>

<br/>
<br />

```protobuf title="Asset proto definition"
syntax = "proto3";
Expand All @@ -96,12 +101,4 @@ message Asset {
}
```


The NFT Onboarding API consumes protobufs serialized to [JSON](https://www.json.org/json-en.html) format. Note in particular that the `Any` protobuf JSON representation consists of a `typeUrl` followed by the normal JSON representation of the data proto `Message`.







Loading

0 comments on commit 46d398b

Please sign in to comment.