Use Cases

DECENT flow Diagram

Publishing

Publishing is a process when the new content is stored in the network and information about it is spread among the community. The detailed process is as follows:

  1. The author creates content in the form of computer files. These files are structured into a package (for package format, refer to , option 2). Metadata, such as description and price, shall be created as well.

  2. The author then selects two integers n and m such that n≥m>2. n represent total number of seeders that will seed the content, and m represents number of seeders that needs to cooperate to deliver the content to the user.

  3. Author’s application selects distribution protocol - currently ipfs is the only supported protocol, but more are in roadmap - and uploads the distribution package.

  4. Author selects n suitable seeder. List of seeders can be obtained with list_seeders_by_upload, list_seeders_by_region, list_seeders_by_rating or list_seeders_by_price API calls.

  5. Author’s application generates unique AES key and encrypts part of the content that is not free.

  6. Author’s application splits the encryption key into n shares, such that m shares are required to retrieve the key.

  7. Author’s application encrypts the n shares created in step 6 with el-gamal public keys of the n seeders, assigning one share to one seeder. The steps 5-7 can be done using api call generate_content_keys.

  8. Author’s application generates the content_submit operation. The operation will contain all content metadata, such as title, synopsis or tags, and network relevant data such as validity, price, list of publishers, and list of shares encrypted for each selected publisher.

  9. The seeding fee is deducted from author’s account. This fee is put into escrow and is used to pay seeders for providing storage. It also acts as anti-spam prevention. Publishing large amount of content will soon become expensive.

  10. The seeders's software will monitor blockchain, and once content submit operation, relevant to them, is issued, it will download the content and issue proof-of-retrievability operation to confirm the content has been successfully published. This is done automatically inside the seeding plugin would it be configured.

  11. Only after m confirmations are included into the blockchain, the content is deemed published.

Buying

Buying is the process when the consumer decides to buy published content. It has form of a contract, starting with promise-to-pay, and ended with payment from the consumer to the author when the publisher was provably delivered the content. The detailed procedure is as follows:

  1. The consumer selects content she wishes to buy and her application downloads the distribution package using the chosen protocol, i.e. ipfs.

  2. The consumer’s application generates request_to_buy operation. This operation will effectively block the required amount of tokens from her account into an escrow. Buying can be checked e.g. with get_buying_by_consumer_URI, get_open_buyings, get_open_buyings_by_URI, get_open_buyings_by_consumer or get_buying_objects_by_consumer API calls.

  3. The seeders’ nodes see the request-to-buy in the blockchain. They will decrypt the respective share (from the content_submit operation) with their el-gamal private key, and encrypt it again with consumer’s el-gamal public key. Proof of delivery is also created in this step.

  4. The seeders’ nodes will generate deliver_keys operation, containing the share encrypted with consumer’s key and proof-of-delivery.

  5. When there are enough shares delivered through blockchain:

    a. the network will pay to the author from the escrow; and

    b. the consumer will decrypt the shares with her private key, reconstruct the decryption key and decrypt the content, e.g. with restore_encryption_key API call.

  6. Finally, the consumer can rate the content, by submitting the leave_rating_and_comment operation into the blockchain. These operations can be collected by different rating and classification engines and used to generate various recommendation for the consumers.

Mining

When the miner generates the block using DPoS, she will:

  1. Verify all transactions, including proof-of-retrievability and proof-of-delivery.

  2. Distribute payments to the author (see buying process).

  3. From the publishing fee escrow distribute payments to the publishers based on the stored content(the proof-of-retrievability).

  4. Keep part of the distributed tokens to herself.