Overview
Last updated
Last updated
Opal is a dynamic NFT (dNFT) management platform that emphasizes data transparency and NFT metadata access control. In Opal, users can manage their assets, generate and curate artwork, interface with decentralized storage protocols like IPFS for asset and token storage, and deploy NFT contracts to the blockchain.
Opal fosters the development of dNFT collections through integration with the Tableland protocol. Tableland is "a permissionless relational database for web3 natives" that allows for rich, composable, and transparent metadata storage and querying. The tables created in Tableland are similar to those found in traditional relational databases. This frees up dNFT collection owners from having to create opaque, centralized processes for managing token updates.
An example non-Tableland workflow is shown in Figure 1 using IPFS. In this example, each time a token is updated, the old metadata must be invalidated. Thus, a typical action a developer could take is to unpin the existing metadata, update the metadata locally, pin the new data, and update the tokenURI()
function on the smart contract to point to the new IPFS content identifier (CID).
In contrast, updating the metadata via Tableland is as simple as adding, removing, or mutating a table's row. In Opal, this is abstracted even further away. A user can simply update their metadata with the click of a button and the changes are reflected in Tableland and on-chain.
More information can be found in an article we wrote as a retrospective to the hackathon during which we first developed the concept that eventually became Opal.
There are two types of tables that Opal leverages: global and user-specific.
A global table is a singleton instance created before Opal deployment. There are two global tables on the Opal platform:
Collections
Users
For example, when a user creates an account on Opal, a new row is inserted into the Users
table. Similarly, whenever a user creates a new collection, a new row is inserted into the Collections
table.
Along with the updated Collections
table, once a user creates a collection in Opal, there are an additional three tables created specific to the user:
Layers
Attributes
Tokens
There are thus n user-specific tables, where n is the number of rows in the Collections
table.
These objects are expanded upon further in the Objects section.