Monetization

Our initial version of monetization requires three unique pieces all on-chain. We are also framing this with NFT creation and ownership for this alpha. In the future, NFTs as the delivery vehicle for unlockables won't be the only option.

Here are the three steps. The first being a Creator creates his Content NFT and upgrades it with unlockable content. Second step is the Creator Payload where the NFT creator sets the rules for monetization of their unlockable creations. Payload must be signed and uploaded through the Darkblock API which will then be stored on Arweave. Finally, an Access NFT can be sold or created dynamically by NFT owners that reference the Content NFT and include a time-based trait.


Step 1: Content NFT by Creator

Deploy an NFT contract that creates a Content NFT. This Content NFT needs to contain Darkblock unlockables.

The example below shows a Solana NFT Token created using the Thirdweb platform.

content nft token

Once the NFT is created, log into app.darkblock.io, and upgrade the NFT with unlockable content. In the example below, we added a 3D model, comic book, and behind the scenes image as unlockables.

content nft

An example of Content NFT with Darkblocks: https://app.darkblock.io/platform/sol/nft/FbNXShA3EPQawwSMLfHGcHvSyNZfti8taCzTxNBtjXDZ


Step 2: Creator Config Payload

Deploy creator controlled configuration of monetization. Use the API to push a configuration. This is a two step process where you construct a signature with our tool, and then take that signature and additional parameters and post to our API to essentially "register" the NFT with a monetization configuration.

This configuration is basically the rules for monetization that the creator gets to control. Minimum rental pricing, maximum rental period and royalties are just a few of the levers the creator can control.

creator payload

We have this easy to use signature tool: (test signature form)

You will need:

Copy
Copied
- NFT ID of the Content NFT (Token ID)
- NFT Creator address (wallet of Creator)
- Platform (currently only Solana supported)
- Monetization Type (Rental only available now)
- Min-Price (Minimum price of the Access NFT for Darkblocks to be unlocked)
- Min-Price-Currency (USD, but this is alpha)
- Max-Period (1440, time in minutes)
- Royalties (Initial split of which wallet gets which portion of rental)

Pressing the Generate Signature button will open up your wallet for the message to be signed, and signature will be available on screen as well as the config.

You'll need both of them for the second step.

BTW, you can also do this task programatically. Sample payload to hash and sign, can have multiple config objects

Copy
Copied
const payload = [{
	    "NFT-Id": "FijaYEdpF1m5Eiph7M1Pg7PmhSSZA22TujaKrj1hEEDx",
	    "NFT-Creator": "9sUnEsLPa6uENMd6MBFMWYXAXDdTadj4nnxSoX93gg8t",
	    "Platform": "Solana",
	    "Monetization-Type": "Rental",
	    "Min-Price": "1",
	    "Min-Price-Currency": "USD",
	    "Max-Period": "1440",
	    Royalties: { '9sUnEsLPa6uENMd6MBFMWYXAXDdTadj4nnxSoX93gg8t': '50' }
	}];
	
	let payloadStr = JSON.stringify(payload);
	const data = payloadStr.replace(/\s+/g, "");
	const dataHash = await hash(data);
	const encodedMessage = new TextEncoder().encode(dataHash);
	
	// make sure wallet is connected first
	const signedMessage = await window.solana.signMessage(encodedMessage,"utf8");

	const signature = btoa(String.fromCharCode.apply(null, signedMessage.signature));

After you have the signature and config settings. You then need to post the creator payload through our API endpoint.

YOU WILL NEED AN API TO POST THE CREATOR PAYLOAD.

After you have a key, visit our Monetize Endpoint and begin to craft your payload. (MonetizeNFT API Endpoint)

creator payload post

Enforced at the NFT level for all Darkblocks accessible by that NFT.

You will need:

Copy
Copied
- Configs (this is the Configs string from the Signature page)
- Signature (this is the Signature from the Signature page)
- NFT ID (this is the Content NFT token ID from the first step)
- Platorm (Solana, only platform supported today)
- NFT Creator (this is the wallet address of the Content NFT creator)

Post and you should receive a success message if payload is correct and accepted.

Congrats, you NFT is now registered for monetization.

Supported type today: Rental


Step 3: Access NFT by Creator or Owner

Deploy an NFT contract that creates Access NFTs.

  • Must be deployed by the Content NFT owner.
  • Must reference the Content NFT and the monetization type.

Examples:

Copy
Copied
- monetization-type: rental:1440m (only Rental available and days(d), minutes(m) and seconds(s) supported)
- content-nft: FijaYEdpF1m5Eiph7M1Pg7PmhSSZA22TujaKrj1hEEDx:Solana (the address of the Content NFT, colon, and the Platform name (only Solana available now) )
- creation-date: 1667826856 (You can <a href="https://www.unixtimestamp.com/index.php">get epoch time here</a>.)

An Access NFT can be created by the Content NFT Creator or Owner. This Access NFT if constructed correctly, will give any holder of the Access NFT access to unlockables associated with the Content NFT.

There are three unique pieces of information that need to be created as TRAITS with the Access NFT. Provided the Creator Payload is done correctly, and the Access NFT obeys the rules set in it, any Access NFT owner will have rental access to unlockable content.

Below is an Access NFT created with Thirdweb's tools.

access nft

Here is an example of an Access NFT. This NFT grants access to unlockables for 5 minutes. After that time period is over, the unlockables are no longer available and the Access NFT acts as a receipt.

access nft mint

https://app.darkblock.io/platform/sol/nft/4TNL1kEDsVxDzWy8JQ47hre3GTPU7YrJ1RXgWEHLP1k9

(Enforcement of payment splits, mechanism to pay out to creators and protocol TBD.)

API (and protocol) associates the Darkblocks from the Content NFT to the Access NFT so all we need to do is embed the viewer for the Access NFT.