1
0
mirror of https://github.com/oceanprotocol/ocean.js.git synced 2024-11-26 20:39:05 +01:00
ocean.js/KeyValueExamples.md
2022-12-21 10:51:50 +00:00

1.7 KiB

Quickstart: Key-value database

Data NFTs can store arbitrary key-value pairs on-chain. This opens up their usage for a broad variety of applications, such as comments & ratings, attestations, and privately sharing data (when the value is encrypted).

Let's see how!

Here are the steps:

  1. Setup
  2. Publish data NFT
  3. Add key-value pair to data NFT
  4. Retrieve value from data NFT

1. Setup

Ensure that you've already (a) installed Ocean, and (b) set up locally or remotely.

2. Publish data NFT

// from ocean_lib.models.arguments import DataNFTArguments
// data_nft = ocean.data_nft_factory.create(DataNFTArguments('NFT1', 'NFT1'), alice)

3. Add key-value pair to data NFT

// # Key-value pair
// key = "fav_color"
// value = b"blue"

// # prep key for setter
// from web3.main import Web3
// key_hash = Web3.keccak(text=key)  # Contract/ERC725 requires keccak256 hash

// # set
// data_nft.setNewData(key_hash, value, {"from": alice})

4. Retrieve value from data NFT

// value2_hex = data_nft.getData(key_hash)
// value2 = value2_hex.decode('ascii')
// print(f"Found that {key} = {value2}")

That's it! Note the simplicity. All data was stored and retrieved from on-chain. We don't need Ocean Provider or Ocean Aquarius for these use cases (though the latter can help for fast querying & retrieval).

We can also encrypt the data. Other quickstarts explore this.

Under the hood, it uses ERC725, which augments ERC721 with a well-defined way to set and get key-value pairs.