Specification

From OIP Wiki
Revision as of 23:54, 19 November 2017 by Devon (talk | contribs) (Created page with "== Specification == === Publishers === '''Publishing''' is entering content and distribution terms into the Open Index with a Blockchain Messages Format and Schemae|message...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Specification

Publishers

Publishing is entering content and distribution terms into the Open Index with a message and schema format that conforms with OIP rules in effect at the time of publishing, verified by blockchain timestamp.

A publisher is a rights holder of a piece of content who controls the publisher address used to publish the content in the Open Index. Examples: Musicians, Filmmakers, Video Content Creators, etc.

A publisher address is a unique public key hash (currently: florincoin, roadmap: all cryptos) registered in the Open Index with a message and schema format that conforms with the protocol rules in effect at the time of registering, verified by blockchain timestamp. Required to publish

A publisher name is a unique name in the Open Index global namespace. Not required to publish. Publisher name registration is valid when all of the following conditions are met:

  1. Name registration message includes correct registration fee, as its tx-fee
  2. First name registration message to register a name owns it, according to blockchain timestamp

A publisher name may be transferred to to another party by sending a name transfer message.

A verified publisher name is an optional distinction, valid when all of the following conditions are met: Matches the real name of a rights holder with the rights to the content, sourced from public databases (ie, IMDB, MusicBrainz) A publisher name verification message is shared in at least one social media platform from an account controlled by the rights holder (Twitter, Facebook, LinkedIn, Steemit, Diaspora, Synereo)

A publish fee is payment for the cost of inputting data into the blockchain. It is paid as a tx-fee and used to validate that an artifact is OIP compliant. The publish fee for free content is the flat tx-fee of the amount of data to be input into the blockchain. The publish fee for commercial content is based on a calculation that . Publish fees drive the security incentive; they increase the potential coins captured by miners in addition to the standard block reward. This sink (fee) is key to the system design because the index blockchain tokens must be use to publish content to the index. Also functions as antispam incentive (viggish footnote).

Artifacts

An artifact is the announcement of the file location, publisher’s distribution preferences regarding a single piece or collection of content, and metadata about the media. Examples: music album, video file and its thumbnail, 3D printable and renders of it, PDF, etc.

An artifact is valid when all the following conditions are met:

  1. The message and schema format conforms with OIP rules in effect at the time of publishing, verified by blockchain timestamp
  2. At least one file is included in the message, defined by a network name and address hash
  3. A correct publish fee is paid as a tx-fee

Any files included in the message are assumed to be published by a party with the right to do so, so their ownership is attributed to this publisher. If another publisher attempts to publish the same files at a later date (identifiable by the file address hash), the earlier timestamp is assumed to be the proper owner, and the artifact will not be accepted.

Message format and schema

Artifact pricing and distribution terms of use are controlled by the publisher. Pricing and distribution Terms of Use options are defined as:

  1. Currency: The monetary value in which the publisher is expressing their pricing terms. At this time, most common is “USD.” (need to include a list of country codes, cryptos, etc) - change to OR: fiat or crypto. Currency, fiat, true/false
  2. Scale: The ratio applied to the integer values of commercial and tipping prices, along with the value from the fiat field, to arrive at display prices. Most common at this time is 1000:1. Combining this with the value from the fiat field means that a value of 1000:1 should be interpreted as 1000 units to 1 US Dollar.
  3. SugPlay (Suggested Play): This is the full price to play the piece of content, think "manufacturers suggested retail price.” An integer value, with the scale and fiat values applied in order to display the retail price. For example, a value of 5, with a scale of 1000:1 and fiat of USD would be displayed as 5*1/1000 USD => $0.005, or half of a penny.
  4. MinPlay (Minimum Play): The lowest allowed price to play the piece of content. Used when a retailer is having a sale or promotion. An integer value with scale and fiat values applied to determine price.
  5. SugBuy (Suggested Buy): The full price to buy the piece of content. Currently buying a piece of content means downloading the file, but soon it will mean buying a token that represents playback rights (currently planning to use Tokenly’s protocol - it functions as Ultra Violet on a blockchain).- aren’t doing to do this default, they have to ask/pay for it An integer value with scale and fiat values applied to determine price. We need to add DisPer here - we anticipate this being the larger use case
  6. MinBuy (Minimum Buy): The lowest allowed price to buy a piece of content. Used when a retailer is having a sale or promotion. An integer value with scale and fiat values applied to determine price.
  7. Retail Services: The percent of commercial (or voluntary tipping) value paid to retailers who facilitate relevant commercial (or voluntary tipping) activity. An integer value of 100 or less, can be 0 or omitted. Can be used with non-commercial artifacts (tip-only) to financially incentivize suggestion of high quality free content. This percent is applied to the total transaction price after sales/promotions discounts have been applied. Example: A song priced at $1 (sug)/$0.70 (min) to buy, and $0.015 (sug)/$0.01 (min) to play, offering a 20% retailer cut. The maximum a retailer can discount each piece of content is limited by its own publisher - for this example, any sale would be limited to 30% off for purchases, and 33% for plays.
    • Any normal day, a purchase will result in $0.80 going to the publisher and $0.20 going to the retailer.
    • If the retailer has a 10% sale, a purchase will result in $0.72 going to the publisher and $0.18 going to the retailer, and a play would result in $0.0108 going to the publisher and $0.0027 going to the retailer.
  8. Promoter: Similar to the Amazon Affiliates program. The percent of commercial (or voluntary tipping) value paid to individual content promoters who drive relevant payment activity. An integer value of 100 or less, can be 0 or omitted. Can be used with non-commercial artifacts (tip-only) to financially incentivize promotion of high quality free content. * gets percentage based on price paid after discounts have been applied.
  9. ptpFT (Pin to Play Free Threshold): The number of nodes at any given time that can get free access to a file in exchange for pinning (aka: seeding) the file. Creates the option for publishers offer limited access to free content in exchange for file distribution which eliminates the publisher’s file storage and distribution costs. A positive integer value, can be 0 or omitted. We expect a number of market determined mean values will develop, depending on the type of content and target audience. We estimate popular albums of high bitrate MP3s will have an ideal ptpFT value of ~8, whereas a long video or movie will have an ideal value of ~20. *We should add to tested, or show our test or something
  10. ptpDT (Pin to Play Discount Threshold): The number of nodes at any given time, past the threshold of those getting free access, that can get discounted access in exchange for pinning the file. Even when a file has a decent swarm of nodes pinning it (estimated: 10-20), there is added (although diminishing) benefit from more nodes in a swarm. The Pay to Play Discount Threshold provides an incentive for end users to participate in the "pin to play" system because some files will be free and some will be discounted. A positive integer value, can be 0 or omitted, or can be -1 if the publisher wishes to put no limits on the number of nodes receiving this discount.
  11. ptpDP (Pin to Play Discount Percent): An integer value of 100 or less, can be 0 or omitted, only relevant if artifact contains a value for ptpDT. * percent applied to total transaction amount after discount has been applied.
  12. Fees

    To determine that the correct amount is paid for the publish fee, the history of the tx-fee tokens are evaluated to determine if the tokens are mined, or from circulation. Tokens cycle through the system; publish fees are sent as a tx fee, adding to the standard block reward.

    To verify they have not circulated on the market, tokens are considered mined when all of the following conditions are met:

    1. Exactly two or three transactions between a) the transaction in which the tokens were newly created or previously spent as a tx fee and mined again b) the tokens being used as the publish fee. If any more than two or three transactions, they must be change sent to self.
    2. The most recent transaction must be from a registered autominer to the publisher.
    3. The earliest transaction must be a block reward transaction.
    4. Specific market data must be in the coinbase as a valid historian message (rental rig cost, flo market prices)
    5. If there are three transactions, the second transaction must be from an OIP-compliant pool to the registered autominer and include in its transaction message which blocks the block-reward payout was for (since pools delay payouts by varying numbers of blocks).

    When tokens are mined, the USD-per-FLO offer price value is determined by the cost to mine at the blockchain timestamp and the historian message in the coinbase when it was mined.

    Tokens are considered from circulation if any of the conditions required to be mined are not met. When tokens are from circulation, USD-per-FLO value is calculated based on the average exchange price at the time of the blockchain timestamp when the publish attempt is made using historian data from the index blockchain.

    Fee is calculated differently for free and commercial artifacts.

    • do this still: add whichever one is greater - total data + commercial pricing

    Free Artifact Publish Fee Calculation

    Publish Fee vs Artifact Size

    If an artifact contains only free content, the publish fee is calculated based on the size of the index data and the cost per byte to store the message in the index blockchain.

    Looked up variables:

    [math]\mathcal{X} = [/math] Exchange volume weighted trade price for one Florincoin token, in US Dollars. Can be looked up at Alexandria's hosted endpoint, returned as the json field labeled USD

    [math]\mathcal{S} = [/math] Size of artifact, in bytes.

    [math]\mathcal{T} = [/math] Minimum transaction fee per byte, in Flotoshis (1/100,000,000 of a Florincoin). This will ultimately be a completely market determined rate; pools will announce their own minimum rate to confirm transactions, and an API endpoint will collect and index them. Currently, use a hard-coded value of 1000

    Calculated variables:

    [math]\mathcal{F}_f = [/math] Fee to publish a free artifact, in Florincoins.

    [math]_$\mathcal{F}_f = [/math] Fee to publish free artifacts, in US Dollars.

    Formulae:

    [math]\mathcal{F}_f = \left(\frac{ \mathcal{S} \cdot \mathcal{T}}{100,000,000}\right) [/math]

    [math]_$\mathcal{F}_f = \mathcal{F}_f \cdot \mathcal{X} [/math]


    Commercial Artifact Publish Fee Calculation

    Publish Fee vs Artifact Cost, Closeup
    Publish Fee vs Artifact Cost, Wide

    If an artifact includes any commercial content, the publish fee is a function of (1) the commercial value of the content, called the artifact cost and (2) the current average cost of all commercial artifacts published in the Open Index, called the average artifact cost.

    Looked Up Variables:

    [math]\mathcal{X}_$ = [/math] Exchange volume weighted trade price for one Florincoin token, in US Dollars. Can be looked up at Alexandria's hosted endpoint, returned as the json field labeled USD

    [math]\mathcal{n} = [/math] number of files in the artifact.

    [math]\mathcal{P}_i = [/math] Minimum play price for each file [math]\mathcal{i}[/math] in the artifact. Can be looked up at Alexandria's hosted endpoint, returned as the json field labeled oip-041:artifact:storage:files:minPlay

    [math]\mathcal{B}_i = [/math] Suggested buy price for each file [math]\mathcal{i}[/math] in the artifact. Can be looked up at Alexandria's hosted endpoint, returned as the json field labeled oip-041:artifact:storage:files:sugBuy

    [math]\mathcal{C}_\lambda = [/math] The average "cost" of all commercial artifacts in the open index. Can be looked up at Alexandria's hosted endpoint, returned as the json field labeled avgArtCost

    Calculated Variables:

    [math]\mathcal{P}_T = [/math] Total of minimum play prices for all files in the artifact.

    [math]\mathcal{B}_T = [/math] Total of suggested buy prices for all files in the artifact.

    [math]\mathcal{C}_\alpha = [/math] The "cost" of this artifact, a single value representing the average between the sum of all minimum play prices and the sum of all suggested play prices.

    [math]_$\mathcal{F}_c = [/math] Fee to publish a commercial artifact, in US Dollars.

    [math]\mathcal{F}_c = [/math] Fee to publish a commercial artifact, in Florincoin tokens.

    Formulae:

    [math]\mathcal{P}_T = \sum_{i=0}^n \mathcal{P}_i [/math]

    [math]\mathcal{B}_T = \sum_{i=0}^n \mathcal{B}_i [/math]

    [math]\mathcal{C}_a = \frac{\mathcal{P}_T + \mathcal{B}_T}{2} [/math]

    [math]_$\mathcal{F}_c = \begin{cases}C_{\alpha} & C_{a} ≤C_{\lambda}\\ (logC_{\alpha} - logC_{\lambda})(\frac{C_{\lambda}}{C_{\alpha}} )(C_{\lambda} - C_{\alpha}) + C_{\lambda} & C_{\alpha} \gt C_{\lambda}\end{cases}[/math]

    [math]\mathcal{F}_c = \frac{_$\mathcal{F}_c}{\mathcal{X_$}} [/math]


    Retailers

    A retailer is an interface (hosted or decentralized) for end users to find or discover content and make purchases.

    Examples: websites, smart phone apps, smart TV apps and physical kiosks.

    An interface is considered a retailer when either or both of the following services are provided:

    1. Hosting a marketplace
    2. Providing payment processing services

    Protocol compliance is a set of rules intended to address considerations of 1) law, 2) content persistence, 3) enforcement of creators/rights holders distribution and pricing terms. These considerations are historically controlled with digital rights management (DRM) via a central authority; protocol compliance enforcement addresses these considerations without causing user frustration or incentivizing piracy. The Open Index Protocol Working Group will maintain open source reference software to standardize and automate protocol compliance reporting.

    A retailer is protocol compliant when all of the following conditions are met: Check to make sure that retailers must have easy dmca reporting. Also complainer has to confirm identity or demonstrate that it belongs to them - we are opposite of YouTube, default to trusting content creators.

    1. Send a retailer registration message with a publicly visible payment address to the Open Index, default payment address is currently BTC.
    2. Validate verified publisher accounts at least once per twenty four hour period by checking that each verified publisher’s social media verification messages are still online.
    3. Contribute to available storage and bandwidth by running a protocol supported version of pinbotwizard, software that manages storage of the files published to the Open Index. Source code
      1. Pinbotwizard maintains a minimum threshold of pins to ensure content persistence, current minimum is 5. Pinbotwizard tracks the pin count of each file and only pins files which are under the minimum threshold of pins.
      2. Pinbotwizard nodes pin only unpopular files; pinning of popular files is incentivized by "Pin to play" (as defined in Artifact terms of use section above).
      3. Pinbotwizard development roadmap: When OIPWG quarterly retailer reporting is implemented (see point 4 below), further logic will be added to dynamically adjust each retailer file pinning requirement proportional to the retailer’s revenue.
    4. Provide reporting for DMCA takedown requests, comply with fair use precedent and review/address takedown requests for any content published to the Open Index.
      1. Retailers must subscribe to the blacklist filters maintained by OIPWG. Blacklist offenses include: distributing content without consent from the rights holder (includes pirated commercial content), distributing content that has been "de-activated" by the publisher, or universally abhorrent (read more).
      2. Retailers can receive DMCA takedown requests for 1) not respecting the publisher terms of use for content published to OIP or 2) hosting pirated content that has been published to OIP.
      3. Retailers who do not make a good faith attempt to address DMCA takedown requests within a reasonable time period as determined by OIPWG will be added to a protocol black list and OIP revenue will be terminated. Black list offenses include: distributing content without consent from the rights holder (includes pirated commercial content), distributing content that has been "de-activated" by the publisher, child pornography, revenge porn, etc.
      4. Retailers may appeal a takedown request to the OIPWG.
      5. DMCA takedown request process disincentives sybil attack efficacy; content in question remains accessible in the Open Index and is not filtered/blacklisted until it has been reviewed. Reverses incentive structure for burying stories/censorship.
      6. OIPWG is not involved in DMCA takedown requests for content that is not published to OIP, including retailers that display a combination of OIP content and other content.
    5. Report standardized commercial activity analytics once per quarter to the Open Index Protocol Working Group.
      1. OIPWG will provide open source software to run the reports which will include only the information necessary to ensure publisher terms of use are respected by all parties taking money from end users.
      2. Current planned content of the report includes: Timestamped record of each commercial transaction facilitated by the retailer including the transaction ID(s), artifact ID, type of commercial activity (play, buy), total discounts applied by retailer, pin count, and all demographic information the end user opts to share publicly.

    Promoters

    A promoter shares links to content published in the Open Index and is paid a percent of the payment activity driven by these links. Promoters are financially incentivized to share both commercial and non-commercial (tip-only) content. Similar to the Amazon Affiliates program. Examples: social media influencers, bloggers, traditional advertisers

    A promoter is valid when all of the following conditions are met:

    1. Send a promoter registration message with a publicly visible payment address to the Open Index, default payment address is currently planned to be BTC.

    Promoter account types and protocol compliance rules:

    • Verified Account: Connected to a social media account. A verified promoter account is created by posting the hash of the promoter’s registration message on a publicly visible social media feed. A verified publisher account generate an automatic link connecting the share to the promoter for every piece of content shared.
    • Non-Verified Account: Not connected to a social media account. A non-verified promoter must generate a new link connecting the share to the promoter for every piece of content shared.
    • Protocol Compliance: If a promoter account is posing malformed, spoofing or malicious links the publisher account is added to the OIPWG blacklist.

    Blockchain Miners

    Miners maintain the security of the index and create the supply of tokens that are sold to publishers. Publisher demand drives index security; OIP connects the publish fee tokens to the index security incentive. The processes for security and file storage/bandwidth are governed by OIP, allowing permissionless participation in offering these services and making them function as fungible commodities. The data for these processes is captured by historan, miners earn their actual costs plus their requested margin with autominer and defend the network without reducing their profit using collaborative defense, traders ensure token availability with autotrader, and trades from miners and traders to publisher are executed by tradebot.

    The following security rules are currently limited to Florincoin index security, the file storage/distribution process will be similar, but will be formalized when more information on filecoin is available.

    Historian data

    Historian encodes protocol specified data into the transaction comment of the block reward (coinbase). Historian data is used to determine the price of a block using the factors of (1) the actual cost to mine, (2) the market spot price, (3) the winning pool’s target margin and (4) the winning pool’s influence over the florincoin network.

    Autominer Application

    Autominer manages miner participation in index security and file storage/distribution based on the miner’s unique preferences. It allows miners to "set it and forget it," and ensures they earn the minimum margin set in their preferences.

    Autominer Pool

    An autominer pool is any mining pool that properly encodes historian blockchain data into winning blocks.

    An autominer pool is valid when all of the following conditions are met:

    1. Send a pool registration message to the Open Index with the URL of the service and the pool target margin.
    2. pool target margin - maybe definition here?
    3. To update or change the pool URL or target margin, an update message is sent to the Open Index to modify the initial registration data.

    Calculating the Offer Price for Mined Tokens

    Offer Price vs Conditions, Segment 1
    Offer Price vs Conditions, Segment 2
    Offer Price vs Conditions, Segment 3

    The protocol calculates an offer price for tokens that qualify as mined using the information captured by historian and the target margin set by their autominer pool, using the following formulae in order to account for both, the current mining conditions and the current market conditions:

    Looked Up Variables:

    [math]\mathcal{H}_N = [/math] Florincoin network hashrate. In hashes per second. (fbdNetworkhashps) Can be looked up at Alexandria's hosted endpoint, returned as the json field labeled networkhashps

    [math]\mathcal{H}_\mathcal{A} = [/math] AutoPool hash rate. In hashes per second. Can be looked up at Alexandria's hosted endpoint, returned as the json field labeled pools:florincoin:hashrate

    [math]_₿\mathcal{C}_d = [/math] MiningRigRentals.com's cost per megahash, for a 24 hour rental, in BTC. (rentalCost24hAvg)

    [math]\mathcal{T}_d = [/math] Time since Autominer pool won its last block, in seconds.

    [math]\mathcal{F}_\mathcal{t} = [/math] Florincoin tokens won in block.

    [math]_₿\mathcal{X} = [/math] Exchange value per Florincoin token, in BTC. Can be looked up at Alexandria's hosted endpoint, returned as the json field labeled weighted

    [math]_$\mathcal{X} = [/math] Exchange value per Florincoin token, in US Dollars. Can be looked up at Alexandria's hosted endpoint, returned as the json field labeled weighted

    [math]\mathcal{pW}_\mathcal{l} = [/math] Protocol Governed Control Variable. (poolWeightThresholdLow)

    [math]\mathcal{pW}_\mathcal{h} = [/math] Protocol Governed Control Variable. (poolWeightThresholdHigh)

    [math]\epsilon = [/math] Protocol Governed Control Variable. (poolWeightExagerator)

    [math]\mathcal{M}_\mathcal{t} = [/math] AutoPool's registered target margin. (poolTargetMargin) Can be looked up at Alexandria's hosted endpoint, returned as the json field labeled autominer-pool-data:alexandria-autominer-pool:TargetMargin

    [math]\mathcal{M}_\mathcal{l} = [/math] Protocol Governed Control Variable. (marketThresholdLow)

    [math]\mathcal{M}_\mathcal{h} = [/math] Protocol Governed Control Variable. (marketThresholdHigh)

    [math]\exists = [/math] Protocol Governed Control Variable. (marketExagerator)

    Calculated Variables:

    [math]_₿\mathcal{C}_\mathcal{f} = [/math] Estimated cost of renting hashes to mine a Florincoin token. In BTC (costToMinePerToken)

    [math]\mathcal{pW} = [/math] AutoPool's Weight on the Florincoin network.

    [math]\Omega _\mathcal{P} = [/math] (poolConditionsMultiplier)

    [math]\psi _\mathcal{M} = [/math] Ratio between the resulting price with the full target margin and the current market price. (targetVsMarketPriceRatio)

    [math]\Omega _\mathcal{M} = [/math] (marketConditionsMultiplier)

    Formulae

    [math]_₿\mathcal{C}_\mathcal{f} = \Bigl( _₿\mathcal{C}_d \times \mathcal{H}_\mathcal{A} \times \mathcal{T}_\mathcal{A} \Bigr) \div \Bigl( 1,000,000 \times 86,400 \times \mathcal{F}_\mathcal{t} \Bigr) [/math]

    [math]\mathcal{pW} = \frac{ \mathcal{H}_\mathcal{A}}{ \mathcal{H}_N} [/math]

    [math]\Omega _\mathcal{P} = \begin{cases} 1, & \text{if }\mathcal{pW} \lt \mathcal{pW}_\mathcal{l} \\ \begin{cases} 0, & \text{if }\mathcal{pW} \gt \mathcal{pW}_\mathcal{h} \\ (1-( \frac{\mathcal{pW} - \mathcal{pW}_\mathcal{l}}{\mathcal{pW}_\mathcal{h} - \mathcal{pW}_\mathcal{l}} )) ^\epsilon, & \text{if }\mathcal{pW}_\mathcal{l} ≤ \mathcal{pW} ≤ \mathcal{pW}_\mathcal{h} \end{cases} \end{cases} [/math]

    [math]\mathcal\psi _\mathcal{M} = ( _₿\mathcal{C}_\mathcal{f} \times (1 + ( \mathcal{M}_\mathcal{t} \div 100))) \div _₿\mathcal{X} [/math]

    [math]\Omega _\mathcal{M} = \begin{cases} 1, & \text{if }\mathcal\psi _\mathcal{M} \lt \mathcal{M}_\mathcal{l} \\ \begin{cases} 0, & \text{if }\mathcal\psi _\mathcal{M} \gt \mathcal{M}_\mathcal{h} \\ 1- ((\frac{ \psi_\mathcal{M} - \mathcal{M}_\mathcal{l}} {\mathcal{M}_\mathcal{h} - \mathcal{M}_\mathcal{l}})^\exists ), & \text{if }\mathcal{M}_\mathcal{l} ≤ \mathcal\psi _\mathcal{M} ≤ \mathcal{M}_\mathcal{h} \end{cases} \end{cases} [/math]

    Collaborative Defense

    Collaborative Defense is an optional process in autominer; it is an automated process that facilitates security of the network without reducing the users profits. *the set of market conditions & collaborative defense process needs to be defined

    Autotrader -> add this

    Tradebot Application

    Tradebot is an application layer function, built into the UI anywhere that a user will be in need of protocol tokens (Florincoin & Filecoin). Most commonly used in the publishing process when a publisher needs to trade $USD -> BTC -> Florincoin to pay their publish fee. In order to prevent bad actors from abusing the process to sell their market-purchased tokens at a price higher than the market is pricing them, its limited only to the trade of tokens mined by protocol compliant autominer pools, with correctly encoded historian messages the coinbase of the tokens.

    Add that if not enough tokens in autominer tradebot, secondary option is autotrader tradebot.

    File Storage & Distribution

    download speeds vs number of peers
    1. File persistence is ensured because Retailers are required to store and seed a portion of the total size of all files in the Open Index. The amount of storage required of a Retailer is commensurate with the percent of OIP market share captured by the Retailer. (retailers, protocol compliance #3). Division of files for storage is random and not based on the content of the files. Example: Retailer revenues are 30% of economic activity in OIP = Retailer must store/seed 30% of total OIP file index.
    2. Playback performance is dependent on bandwidth. Similar to other p2p networks, bandwidth and file popularity are positively correlated; there is no upper limit on user file storage/distribution. Users are incentivized to store/distribute files via: 1) pin to play: free or discounted file access in exchange for seeding files 2) Paid hosting: Filecoin* (once released) will allow users to pay the network to store more copies of a file, increasing its bandwidth. 3) Fandom: some fans will volunteer storage/distribution to support the artists they enjoy.
    *Note: ipfs-cluster & filecoin are specifically related to IPFS. A publisher can use a different network for file storage/distribution because OIP uses interoperable transport layers, such as the Bittorrent Mainline DHT. Sia and Streamium also offer similar functionality. The OIPWG roadmap includes reference client software to implement the “pin to play” and “retailer file storage manager” functions for additional networks like these.