# Rentable CDN Using Blockchain and Proof of Provenance
## 1 Introduction  
Internet is an ever-growing network infrastructure that connects users from all around the world. With the growing adoption of personal computers and various mobile devices that connect to it, the number of accessible contents has increased as well. This meant that the sudden spike in request for a particular content has become a common occurrence and services can stop suddenly due to high load [1]. To make the contents accessible even during the sudden peak period, content delivery network (CDN) is developed. CDN solves this issue by replicating contents and redirecting content requests to ensure that the service can function uninterrupted. CDN's performance boils down to its replication and redirecting capability [2]. For effective content replication, following three questions need to be answered: which contents should be replicated, how much replications are required, and where to place the CDN servers that will be replicating and delivering the contents. Determining which content to replicate can be further broken down to whether to replicate the content fully or partially. This is because a content is usually composed of several files. For example, a website (content) may contain HTML files, image files, and functional codes such as JavaScript. Replicating parts that are unique to the content such as HTML files will have smaller benefit, whereas images or functional codes that are common to other contents will have bigger benefit. The identification of such files can be achieved by clustering individual files based on a metric such as the of time delay reduction measurement to delivery contents [3, 4]. Then, replication priority per cluster can be determined using the same or similar metric. On the other hand, finding the optimal level of replications (how much to replicate) is known to be an NP-hard problem [5]. Instead of trying to find the optimal level of replications, heuristicmethods such as global greedy algorithm are used to find the sub optimal solution. Refs. [6; 7] focused on finding a set of replication levels per object that guarantees a certain delivery performance. More advanced work incorporates other CDN specific data such as location of CDN servers, and distance between CDN servers to determine the level of replications [8; 9]. Finally, there is a question of where to place the CDN servers. This question can be reformulated to solving the optimization problems like minimum k-median problem [10], k-HST problem [11], and set-cover problem [12]: the placement of CDN is optimized with respect to the cost function, where the cost function uses inputs such as set of possible locations for CDN, workload, latency, and other information derived from CDN. Using the aforementioned work, one can build a fast, reliable and scalable CDN. However, building and managing a globally connected CDN infrastructure is costly and difficult. To remove the need for individual businesses to build and maintain a global CDN, cloud-based CDN such as Google Cloud and Amazon CloudFront have emerged to provide a fast and scalable infrastructure that can be configured and bought over online [13]. In addition to the ease of usage, cloud based CDN hardware is regularly upgraded and maintained by the CDN service provider. Despite the advantages, CDN services are costly and the inherent high barrier to enter the CDN market promotes centralization, censorship, and market oligopoly. To reduce the cost of building and maintaining the CDN, there has been work that utilize user's existing hardware to build a globally connected CDN. Unlike the traditional CDN that uses server client model, where dedicated CDN servers deliver contents to users, this type of CDN uses peer to peer (p2p) communication to deliver contents from a set of users to a user. This is referred as p2p based CDN. The key feature of p2p based CDN is that users can deliver contents using the resources they already own.