EB100 – Juan Benet: Decentralizing The Web With The Inter-Planetary File System (IPFS)

12 Oct 2015 · 1:36:54

Juan Benet, inventor of the InterPlanetary File System (IPFS) and founder of Protocol Labs, explains to the Epicenter hosts how IPFS aims to complement HTTP with a distributed, versioned file system inspired by Git and BitTorrent. He contrasts location addressing, where links break when a server disappears, with content addressing by cryptographic hash, and walks through adding and finding files, HTTP gateways, DNSLink and IPNS for mutable names. The conversation also covers Neocities, linking files from smart contracts, and Filecoin, a planned sister protocol that would pay miners in cryptocurrency to store data, before Benet sketches his long-term vision of the internet and how Protocol Labs might fund its protocol work.

Speakers

Topics

Transcript

[Music] this episode of epicenter Bitcoin is brought to you by hide.me protect yourself against hackers and Safeguard your identity online with a first class VPN go to hide. me/ epicenter and sign up for your free account today and by shapeshift with no account or sign up required it's the easiest way to buy and sell gems counterparty Dogecoin Dash and other leading cryptocurrencies go to shapeshift.io to instantly convert your altcoins and to discover the future

of cryptocurrency exchanges hi welcome to episenter bitcoin the show which talks about the Technologies projects and startups driving decentralization and the global cryptocurrency Revolution my name is C and my name is Brian Fabian crane we're here today with Juan benett he's the inventor of the interplanetary file system a project with a nicely modest name and he's also the founder of protocol Labs which is the the company behind developing it so ipfs isn't directly a Bitcoin project but it's a super interesting and ambitious uh kind of projects to decentralize the internet

and before we were just sort of going through topics and seasia had this realization he was like oh my God this changes everything so hopefully we'll get to the same moment in this episode and all of you will have the same drop a thing and think like have a a change in worldview so thanks so much one for coming on yeah thank you so much for having me this is a pleasure so um perhaps let's let's get started with that so can you tell us a little bit how did you come up with ipfs and how did how did that project get started yeah so um it all it started very simply like I wanted just to make a um package manager for data sets uh so the goal was

to make something that was really fast uh for moving around scientific data so this is really big files things that are you know hundreds of gigabytes or terabytes um per data set uh but that was also versioned right so something that you could improve over time and collaborate on so something like git and something like bit torrent um and in kind of syncing into the the depths of U melding these two pieces of Technology um I came up with a Distributive file system which uh then came on to be named ipfs but it didn't strike me until later that uh it has wide implications for the web as a whole and that can improve how we move around data uh throughout the network and so that's kind of the focus

now so though we started with um trying to solve like a scientific data set problem um we are much more focused now on just improving the web as a whole uh and that's that's the goal of ipfs and so how did you come up or what did you choose the name interplanetary file system so uh that's funny so um the jcr licklider who was uh one of the people who came up with the arpanet originally um had this idea of creating the intergalactic Network and so when the internet actually stands for Intergalactic network uh and so in anomal to that uh we decided to name it something along those lines um and so

interplanetary file system works really well because it also when you say ipfs uh it's the file system for the internet uh and so that's what uh brought the name together so tell us exactly what is ipfs what does it do so it's a at its core it's just a version file system right so it's a system that um can take files and manage them and store them somewhere uh and track conversions over time very much like git but it also accounts for how those files move across a network so it's also distributed file system so it um has rules as to how the content moves

around uh similar to how bit torrent uh has rules around how data and the bitor network moves around uh and this file system layer uh is enough to build a much better web uh a web that gives you very interesting properties like uh websites that are completely distributed websites that have no origin server that can run entirely on on client side uh browsers and not have any any server to talk to um but yeah it all kind of falls out of just a a nice system to move around files kind of like the web falls out of a lot of servers speaking the HTP protocol and some web browsers Runing pages so I mean

the when when we when we think about ipfs It's seems to me like I mean not only HTTP could be replaced by or potentially augmented by it have you thought of other other potential protocols that it could uh repace so um this is tricky right because when you when you make something like ipfs you suddenly start looking at everything one in one specific way and you realize that you can like replace it all um this is probably the same kind of thinking that uh probably Timber Lee had when he came up with uh HTTP and HTML he probably just saw all these file systems as as things that could be globed up into the web um and they have been um and so I

think like things that are candidates are just a lot of cdns a lot of content distribution networks of different types um a lot of different kinds of distributive file systems may not need to be around if this ends up being as good as as we want it to be um versioning systems like uh I think G is so good that we it'll be around for a long time but there are certain kinds of Version Control that don't exist uh that doesn't exist now you know versioning on media for example like uh imagine being able to version correctly uh videos as you make them uh or L large movies and so on uh so those kinds of systems could be augmented or replaced by by ipfs depending on how the tooling evolves but uh but I think like the main

focus for a while will be on building this new storage layer for the network like for the entire internet where uh the way the protocol that people use to move large amounts of data changes and it goes from uh something that like HTP which is um client server oriented and U oriented around recent data uh in that you always have to sort of make requests to the server to check if data has changed or um if you have the latest thing or something uh to something where you can reason very carefully about what you already have and sometimes completely avoid having to make any requests at all which is a really powerful property when you think about uh the offline use case so

one of the big design decisions for ipfs is to make it offline first the same way that git is offline first meaning that you can mutate files or or um add content to ipfs entirely offline or disconnected from other peers uh and when you rejoin the network uh all these changes are synced over time so you mentioned HTTP and I mean we can get into some of the other use cases a bit later on in our discussion but um in a lot of your talks and a lot of the writing around each around ipfs it it's often mentioned or alluded to that HTTP is somewhat broken or flawed uh can you explain why you feel that HTTP needs to be uh replaced or complemented by distri

System something yeah so I think uh uh first of all um I uh I think much more complimented I think for a long time uh HP is a fantastic protocol and it does so much right and it got so much right uh you know 25 years ago now um or so 20 20 something years ago uh it's a fantastic protocol and it'll continue to do great stuff for the for the internet um and we'll continue to use it for a long time the same way that we use today still things like FTP and so on um but there are some issues in how HTTP works that are not scaling um with our uses of the network uh and our uses of of the web in general uh and in particular uh actually I think in terms of

how websites are represented or how websites store data on the internet um HTTP is actually not a very good system for for doing this um you would want to be able to have a protocol which allows you to reason about how the data moves which perhaps has some um has you you want some certain properties and the links that you have between between computers things where you're able to check Integrity or where you're able to um have some cryptographic uh guarantees around things you want to be able to perhaps have signed links and things like that um and just in general the the client server you know single link model of HTTP uh doesn't really work when you

think about how big the network is today uh and how you can leverage uh connectivity between hosts uh when on every single request right like when when you're able to um if you're downloading some big file uh you don't just want to download it from specific uh location uh you want to be able to leverage whoever else has this file in the same way that bitorrent uh swarms for example uh achieve this great Network performance uh you want to have peer-to-peer sharing of the bandwidth load uh of downloading website or something um so in that regard I think like the the core problem with HTTP is that it's location addressed so when you

look at a URL uh the very first part of a URL um so it's it's a protocol but then after that it's the the location so it's the IP address or the domain name which Maps an IP address and that location identifies a specific set of computers that will serve uh whatever resource you're requesting which presents a really big problem if you can't talk to that set of computers right if there's some problem in the network between you uh or the network is slow uh or you're just completely disconnected uh you just cannot access that resource at all um and that resource may have certain properties like it could be a file that hasn't changed in 10 years and yet you still can't access it and this problem gets worse when you think about how

quickly websites disappear so there's this um really short lifespan lifespan to uh to websites I think uh some people give figures around 100 days I think that's that might be too intense uh but in general tons of websites disappear all over all over the place and they change and move and so on and so all these links become uh stale or broken uh broken entirely sometimes sometimes you can't find data in anywhere um except on say the internet archive who's been you know graciously trying to back it up as much as possible because they realized this problem early on and they've been trying to like make backups of everything but you know there's just a tremendous amount of data and we can just improve how the network works to um just make those backups sort of

automatic so so you talked about that HTTP uses the of sort of the location addressing which you think is flawed and and what ipfs does is content addressing can you explain what cont adding is and and why that's a better approach yeah so and yeah let me first say that location addressing makes a lot of sense for certain kinds of use cases um so so it makes a lot of sense when you want to specifically designate some Authority or some some set of computers as as the um you know source of Truth on on what the current state of something it might be um but it is not very good for just large amounts of data or storing data that you may want to access uh offline

so the the Alternatives um one example might be content addressing and so this is what ipfs uses uh content addressing is the practice of saying instead of creating an identifier that uh addresses things by location we're going to address it with some representation of the content itself meaning that the content is going to determine the address this pretty much means you take a file you hash it cryptographically so you get a very small representation of the file um that's you know secure uh so that you can't just come up with some other file that has the same hash and you use that as the address so the address of of a file in ipfs um usually starts with a hash that identifies some

object some root object and then a path walking down so instead of a server you're talking to a specific object and then you're are looking at a path within that object uh you're you're sort of looking at a root of a graph and then walking down its links to find whatever it is that you're looking for right so so sort of right now the way it will be uh you know you see a link to a file and then basically that points to some location and you go there and then it gets whatever is on that location which may be the same when it was created maybe something else who knows right uh so but you sort of go out looking at like what is at that location whereas with ipfs would be uh you know you have this file and you go out and it's like

where is this file yeah exactly so in in ipfs you have these addresses which mean the the content so you start with the hash and so on and then you have to solve the problem of of locating it separately right so so HTTP has this nice property that because the identifier is a location you know exactly where to go you talk to those computers and you get the file so it's nice and and that can be pretty fast uh but it doesn't work in the offline case right and it doesn't work in um in large distributed scenarios where uh you want to minimize the round trips or you want to minimize like the the load across the the network um and certainly when you have just tons of data it becomes a pretty big problem to

just constantly be making requests um instead in ipfs you have this separate you separate the steps and so the first step is you identify the file with content addressing and then the second step is you actually go and find it and so when you have the hash uh you ask the network that you're connected to uh you basically ask who has this this uh content who has this hash uh and then you connect to those peers and download from them this is basically what dhts do uh so this is a well well-known um technique uh this has been around for 15 years in fact this is uh how bit torrent Works nowadays uh nowadays when you uh go on um download a torrent it usually starts with an info hash and that info

hash is just a a hash that gives you um a set of peers in a in a DHD and then from them you download the torrent file and then you start downloading the the rest of the file um so this is not new this is actually a pretty old idea it's been around since 2000 or 2001 um but it hasn't been you know put as part of the of the web itself uh yet there's been some attempts in the past but they haven't um they've been as sort of like different layers uh I think like the most notable one I think is is ndn so this is name data networking and the idea was to put uh content addressing directly in the IP layer so um and this was a project started by by Van Jacobson who's uh you know famous for for

basically fixing TCP in the 80s TCP broke the internet fell apart uh van Jac came in and said uh here's how we fix it and he came up with the entire field of congestion control um for TCP and so on and and just sort of became an internet hero uh and lately uh what in the last I think uh 10 10 or so years he's he had been working on name data networking which is the idea of putting content addressing at the IP layer um that's it's really difficult to do because in order to get uh the entire network to move off of Ip to something like ndn uh you need massive buying across the world uh I mean we haven't even switched to

IPv6 uh I think like switching to something else would be even way less likely and so we are working at a layer above which is uh let's put content addressing at the HTP layer uh and move from something like HTP to something like ipfs um which can in fact generate demand for for ndn so if if ndn existed and was and gave and we weren't over IP but we were over ndn ipfs would be a lot easier to build uh it would be a much much faster thing to to get through um but uh we basically had to do all this like intense peer-to-peer work to Wrangle this point-to-point link Network into a peer-to-peer overlay that gives

you really fast routing um more on that later but [Music] let's take a short break and talk about high. me high. me is a VPN provider and if you don't know yet why you should need a VPN provider let us help you I'm sure you like me and when all the crazy Revelations came out during the Snowden time uh of all the the spying that is being done by the NSA and other government agencies you were shocked and you said not with me not with my own rights now the way government agencies can spy on you there's many of them but the most easiest way is by simply going to your ISP and getting all your traffic capturing all your traffic and the VPN

can protect you from that it can give you a secure tunnel from your computer to any of the exit nodes all over the world so that all your traffic goes to this secure pipe that's encrypted and cannot be intruded on and with height. me you can choose any of their their 30 exit nodes all over the world so you can enter the internet in a secure location the best thing about hide.me is that they have a free plan the free plan includes 2 GB of unthrottled bandwidth on three of the exit nodes that they provide now if you want to get a free plan you just go to hide.me enter and sign up there and if you use that URL if ever you decide to get a Premium plan you'll get 35% off now the premium Clans are really fantastic they offer

unlimited bandwidth access to all 30 of their exit modes and you can use high. me on up the five devices so you can just install the thing on your phone and your tablet and your PC and have the thing running all the time and just be completely protected at all times and by the way you can also pay with Bitcoin so we'd like to thank high. me for their support of epicenter Bitcoin so you you mentioned before Bor right as one as of the inspiration and it makes kind of sense that you know in some cases HTTP is bad at delivering data and you know this can do a much better job the other thing you mentioned was GID and versioning can you explain why is versioning important for files so versioning gives

you the ability to track how content has changed over time um so there there's two sides to this versioning thing so one is seeing the history so being able to have access to how things have changed and the other is to be able to link to any one of those versions forever right so if I if I see some content out there like say it's you know some post by somebody um and want not be able to link to it or I want to be able to reference it uh then I can I can usually link to it with an HTP URL but I'm not guaranteed at all that that content will be there in the future uh I'm not guaranteed that the user that is viewing my post will ever be able to see that post uh and so with ipfs you get this property of being able to link to

specific versions of objects and replicating replicating them yourself and so the point is when I were to quote your your post for example I would create a link directly to it and then whoever viewed my post would also view that version of your post as well uh they could there's ways of letting them be able to see the newer versions of your post say if you updated it or something um but the important piece is that the content that I reference doesn't disappear uh that I can have some way of ensuring that that content doesn't go away so so that means for example let's say you had a Blog and you're linking to different people and you say like oh I I want to be sure that when people come back to my blog three

years down the line and I have all these links in there that those pages still exist then with some ipfs I could just host those myself uh and yeah exactly so you help replicate that content right so um when you link to stuff uh you are uh adding them a sort of in a sense dependencies to your content and so um when you back up your content and all of its dependencies then you would be backing up some of those sites as well I mean of course you could potentially today take someone else's site and just copy it and but that wouldn't work so well I guess cuz cuz the location would be different then

right it wouldn't be so so the location would be different and you know we would also have to trust you and trust that you were really linking to the to the correct thing um it's a really hard to do like you would have to go and like take their site and like try to do this um of like copying all the stuff and hosting it somewhere and trying to like create this mirror uh and in fact like this actually what the internet archive does right so the internet archive is trying to do this for the entire web all the time and it it works reasonably well and that they were able to create these backups of websites but it doesn't work so well for dynamic websites things that are um you know by Nature like just have pages that are constantly changing um and so on or like you know social

networks where uh that are closed and the archive can't crawl or or something um and so with ipfs you could put all of these posts as first class objects in the graph itself so the thing about ipfs is that it doesn't it's not just about files it's a it's a layer below that um it just gives you this graph of objects that you can link together so think of all of your data as being able to write on this on this transport uh and be able to be linked the same way so that you could have like a user object for example as an ipfs object that can link to other user objects or that can link to posts and so on and so a post can link to another post that it referenced or something and by backing up that post you back up everything else so this is

the aha moment that I had earlier where I was imagining um because I've I've been playing with ipss for the last couple days and and trying to think about ways that you perhaps like host websites on ipfs you know they would have to be client side but with Technologies like meteor you could considerably do stuff like that and then you could have like a a nosql database that would be sort of a Json structure and in that structure you would simply reference other objects like user objects or products for example if you're hosting a an e-commerce site or and those objects would have all the properties that you mentioned like versioning Etc and but then I guess the the flip side of that is is those

objects if some of those objects become uh unnecessary stereo needed you know they could considerably stop being served if the nodes in the network stops stop so um in general think of of this a little bit like git where once you have old history it kind of tends to stick around like yes there are cases where you go and like garbage collect old stuff but in practice you rarely do that because the content is so small like in in practice the the the really important data is usually really small meaning that uh databases and um you know like yeah like content in databases or the

content in like important uh files and documents and so on is usually very very small uh compared to say like big movies and big media um so because that data tends to be smaller on on average I mean like there are of course like these massive data warehouses and so on but um because that those pieces of data tend to be smaller you don't have a problem just accumul over time and in general most people want to keep as much data as possible because it gives you more information about the past and it gives you more information about um your decisions in the future uh being able to uh look at the past allows you to make better decisions about the future um so kind of like a get reposter you would just keep things around uh in for the

most part like think also about books right like you don't if a book references some old book uh there there probably isn't a time that's going to come when you say you know what we don't need the old book Let's let's just burn them all right we we've kind of like figured it all out uh you still want to keep everything around um and so IPS gives you the ability to to just do that for lots of data that uh isn't very large in general um and it gives you a very simple way of reasoning about how those old versions are going to stick around and how you can reference them and how you can find them and so on um the same way that git works so I'd like you to walk us through I mean let's not spend too much time on this because we have so much more to

talk about but walk us through what happens when when you install ipfs when you add a file or a set of files uh to the network and and then they start propagating can you sort of explain what happens and like end to end yeah end to end yeah yeah that's a that's that's great so it's it's large and it's um it sounds complicated but when you think about just how complex moving a packet from one side of the network to another like it's not actually that big of a deal um and that for example like HTP is actually pretty complicated when you when you look into it or even IP is really complicated when you look deeply into it um so in ipfs uh so today uh the way the distribution work uh works right

now is that you download this client and you and you run it in your local machine that's not going to be the case in the future like what we're targeting is um for ipfs to be to have implementations on the browser so we're talking about Native support for ipfs in you know Chrome and Firefox and all the all the major browsers um and the way we're going to get to that uh you know we have like this several step approach uh one step is to uh make a JavaScript implementation so that you can just run ipfs entirely in a tab um another is to have like extensions because the tab is it's going to be really good with like no friction people are going to be able to use ipfs with without installing anything at all uh but it'll be a little bit slower than

if you had it installed in your browser and so for the browser will have an extension so if some users that want to do that can run an extension um um and then over time we want to just prove out to the browsers and say like look this is what it would look like to have ipfs just natively in your browser and then submit patches to them to get it adopted and like that's that's the goal like to to make it completely transparent and stimulous so that nobody has to install anything at all um so today uh in order to to like you know get there to some point we have a distribution that that works through um a local binary that you install and you run locally um and so once you once you're running ipfs uh and you you just run one command which is

adding a file and so that could either be from the command line so you can just say ipfs add some file or some directory or you if you use the web UI which there is one uh you can just drag and drop and so you can just like drag a file from your computer and drop it on on ipfs uh and then it gets sort of added to your to your local node ipfs doesn't actually move the content all over the place like it nobody downloads anything unless they specifically request it there's this is a set of hard constraints um I'll describe more why later but just uh for now like just assume that that's the case uh once the content is in your node your node is now going to well first of all it chunks the content so if

it's if you're throwing in a large file it as it Imports it it it splits it up into a whole bunch of little pieces and creates a graph out of it so uh a graph that allows seeking so being able to have a really fast index um so that for example if you want to access like the middle of the file you don't have to go through like a really you know um you don't have to seek from the beginning and so on this is like Basics file systems once you have that graph you have a set of objects uh that are all these nodes um in the graph and you want to tell the world about them uh and so this is the what we describe as the routing layer of ipfs so it's the content routing uh when you add content to ipfs you start advertising what

content you have and this is of course configurable like there are there are certain content that you might want to add that you don't want to advertise and that's a policy that can be set how that gets set and so on it's a little bit complicated right now uh but in the future it'll be like pretty seamless um but you know the content that you want to distribute gets advertised to the rest of the network and these advertisements all it is is just you're kind of like telling the rest of the network hey I've got file with with a certain hash um if another node somewhere else in the network now wants to request that file uh what they do is like they try to get that content and so they ask the rest of the network um who has that uh that content and amongst one

of the the responses it'll be your node and so they'll connect directly to you and download the content from you and so they'll download it object by object and so they might actually just want a piece of it so for example if um suppose that this is um you know some like large data set or like you know some large file like a huge document or a movie or something and they're only seeking like from the middle middle on they don't have to get the first part of the file they can just like request the object that they need to just get to the middle and just start from there which makes seeking really fast uh and gives you like this really really good experience uh on browsing for video and so on and uh then they start getting that content right but as soon as they start

downloading it as more people start requesting that file uh there are now say two three and so on uh nodes that can distribute this content this is basically kind of how uh bitorrent and other networks work um but that's usually just kind of like this separate system that is not integrated with a web and so we are just making it integrated entirely with a web uh so I think like yeah so you add content it gets added to your local node it then gets advertised to the network and then somebody else in the network can request it and then they they pull it in um and they have it uh along all these steps by the way there's there's hooks for logic to be added which is I

think a very important distinction between ipfs and other systems um we giving you the ability to to set up policies around how content gets advertised to whom it gets advertised over what network um and even if you receive requests for certain objects you're able to decide whether or not you serve it to those to those peers you may have certain constraints and you say well yes I have this content and I want to serve it but I only want to serve it to specific sets of of individuals or individuals that carry a um that carry a uh a token so a token like an authentication token or something so this is how you do security today in in HTTP web and it's the same thing in ipfs so you would be able to give people the ability to just download um secure stuff

like being able to to know exactly who's downloading things today's magic word is storage s t o r a g e head over to let's talk bitcoin.com to sign in enter the magic word and claim your part of the listener [Music] reward so when I was reading about ipfs I came across a blog post by a guy from new cities uh which I thought was quite interesting and perhaps that would be a good thing to talk about also to give a little bit of a more you know a concrete project that's actually using ipfs can

you can you talk about what they do yeah so uh yeah this was uh Kyle Drake Kyle Drake is the founder of um Neo cities and he's uh really really awesome guy so he sort of found us on the on the internet and found ipfs and uh understood the implications and was like wow this is this is huge uh and he just kind of like jumped on um on the RC Channel and just started uh hacking away add a bunch of like different things around it uh super awesome guy by the way uh so he so he made new cities to be this website that um he's trying to sort of bring back creativity into the web and so he sees The Disappearance of geoc cities like the old Yahoo geoc cities website um as

this huge moment of kind of Destruction in the web when uh this site that used to host tons of websites and tons of valuable um important creative moments for people just kind of all went away and a lot of crap too I got to say yeah made a lot of that crap on J cities at the time yeah yeah it's it's uh for sure but you know you never know like some of that stuff could actually be valuable in the future like you don't know what um silly little uh experiments from random people it are actually interesting to look at or interesting to to to read about so like Gees is like this this website that sort of disappeared um and sort of create destroyed kind of the uh

creativity and and one of the points here is that uh it's difficult to uh get started with programming nowadays uh when you think about how most people started programming it in our generation maybe not in the older Generations but in our generation it's usually with a web right like people started learning how to how to program websites and how to do HTML and how to like add a little bit of JavaScript and a little bit of CSS and so on and over time they had this like really fast iteration cycle of being able to just add a little bit of code to get a result and Geo C's made that really easy and and Kyle's point is with that gone we don't really have a whole bunch of other outlets that are that easy and that simple to get started with uh so he wanted to reboot that and

say like let's create this again um let's try and and um build a a better version of of that idea and bring back creativity to the web and his goal is to make something that's kind of permanent right that that um people can't necessarily um just sort of like shut down automatically and that like uh he doesn't want a company that will be like um bought and shut down like two cities was um or a a set of websites that just at some point the company will just say hey sorry users we know that you're using this but we're just going to shut it down on you anyway um he wants to give control to the users entirely and say like look this is your thing uh we

just make it easy for you um but you have the the complete control and so ipfs actually gives neoc cities a really good way to do that um because normally um with the regular web you have to host servers and when people are hosting things in your infrastructure there you have all their content and you are hosting it for them and you're their intermediary and at any point you can just sort of like shut down and disappear and it's very difficult for people to back all that content up and set up their own website somewhere else and so on but with ipfs all of those websites are just these objects that are shared and so uh neoc cities becomes um a website focused entirely around the

making it easy for people to get started and making it easy for people to create on the web but all of the content is stored in ipfs which means that anybody can back it up and continue creating and continue generating um and so he sort of makes it a a a uh a thing where where users have complete control uh and have the ability to just own their data and decide when it gets shown and um you know when it gets taken down or whatever but but so I get that that they they have the data on ipfs as well or only as well I presume right so right now it's as well so they have their uh so the the implementation will follow a set of steps like so for now uh it's as well so

you have all of the sites are um on uh they're served by the HTP servers in in new cities the same way that we have have our ipfs gateways that serve HTTP to to people um and you can request all of that content also with ipfs so so if you're using the ipfs protocol natively then you can request all of that content as well so it's both in in HTTP and in ipfs um and where it's going to get interesting is when uh when we get naming to be really robust uh so that's when you can give people keys so new C has this plan of of giving people keys uh to a certain U name and the keys can be generated by them if they want to do

that um and they can just give the updates to new cities and new cities doesn't have to ever own the keys or anything at all they just kind of like mirror your content for you and make it easy for you to get started and so in the case let's say neoc CS disappeared then somebody else at least in that intermediary time where let's say I my browser doesn't know what to do with ipfs someone else would have to go in there and do that sort of resolving that you know if you make a request then they look up in ipfs uh yeah so we have this this bootstrapping problem uh which is that the majority of the of the network does not speak ipfs so how do you get them uh to use ipfs

content and the way we solve it is that we have uh along with the standard distribution of ipfs you get this HTTP server which takes every request it gets and resolves it through ipfs so so we call this the Gateway and so it's an HTTP to ipfs Gateway so you make HTTP requests and so standard browsers can look at it um and can link to it and so on uh but the whole content actually gets resolved through ipfs um and we run a set of gateways uh so we we run this like network of servers that um are the so the ipfs.io domain uh is our Gateway and every link that people go to and that website is hosted entirely on ipfs so anything

inside ipfs.io is hitting uh is is being served with ipfs behind HTTP uh so you make your browser might make an HP request and that at that server it gets stred into an ipfs request and then it gets served so there there there are multiple gateways of which ipfs.io is one of them but so this is so I was talking about websites earlier um and I'm I I sort of experimented I was building a website a static website and I I uploaded to uh to ipfs and and and I was able to to access it through a Gateway and then I started thinking okay well how can I uh route a domain name to this uh to this uh to this address uh and one way of doing that would be to

just on like my hosting server have a static page that redirects there that does the URL cling but I still have to rely on that uh hosting provider that's sort of sort of a central point of failure or you know if if you're looking to eliminate those um in in the future can we imagine that you can straight up set like DNS um your your DNS settings to point to to an ipfs um object yes so that's not the future that's today you can do that entirely today uh we call this we call DNS link uh so we not only are we going to make the ipfs web but we're also going to

make the DNS web uh the DNS web is just uh you take a text record and you set a value called and you prefix it with DNS link equals and then some some link and that link is not just an ipfs hash we we made the point that hey this should be for other protocols as well um and so you say DNS link equals and you say you know some path and that path could be on ipfs it could be on HTTP it could be anywhere else right and so uh whoever is resolving this text record um can take that domain name name and the value of that domain name and then um put it on the on the browser right and so we have this working today with two things one is our gateways do this automatically so if you go to

ipfs.io ipns ipfs.io again what that will do is it will request the DNS text record for the domain ipfs.io it will realize that there's some hash associated with that and then we'll fetch the ipfs content that will serve it so your url will look beautiful like it will have no no um hatches on it in it at all right but that you're still relying on a Gateway to do that what I'm that's the guess the next step is being able to set a DNS record in your DNS Zone with your hosting provider and saying this DN this this domain name points to not an IP an IP address but points to an ipfs

object or an ipns object and perhaps we can explain what ipns is briefly but so what I mean is that the records work exactly how they will in the future already what doesn't work yet is the resolution because the user's browser doesn't know what to do with it right like the user's browser still needs um a bootstrap step of being able to uh talk to the ipfs network and so we can solve that in multiple ways so uh one way is with the gateways that's like that zero uh running ipfs locally at all uh the next step is you you solve it by so the our Gateway will transition to doing this in the future but um when they detect that you're viewing it through a regular web browser um and you don't have a special header set or something it will serve you some JavaScript that

will be the ipfs uh client in JavaScript uh like an ipfs node in JavaScript you will run that and then you'll be able to resolve the DNS record yourself um so we can do this without any any changes to DNS we can do this now with just the what we have you can do it with what what you have we just need to ship our JavaScript implementation and then then you'll get a zero install uh thing you can do it also today if you want to install something if you install your a local client then you can do it locally um and if you install a um the browser extension for example you can do it locally so we're sort of reliant on uh browser extensions and down the road

eventually this is what's what's desirable is for browsers to support ipfs and once that is in place then we can have purely like DNS resolving two ipfs objects yeah well you'll have the DNS resolving um in yeah so so JavaScript doesn't allow us to do Tech text record resolving um yet so yeah we'll we'll still need to get um either some code changes in the browser or rely on an extension to get the full uh D resolution but you can actually um if you sign your records with you can actually use some other resolver for for you right so you can still get all of this in JavaScript meaning that you can get what you're describing will

be a reality in like before the year ends like in 2015 that's that's very cool and so just we mentioned ipns I think it's important to to uh just point out that ipns is a component of of ipfs which allows you to have uh a hash which is mutable which will not change over time and which will continue to link to an object object that can be changing so for instance you could have a website that you know you keep updating and with this unique hash uh that uh Remains the Same you will always point to that same object yeah so the the idea is that um ipns gives ipfs mutability so a regular ipfs path is is

immutable by Design the the ideas you have these objects that that can't change uh and that gives you all these re really nice distributed system properties where you can reason about the content you and view it offline and all that stuff um but you still need some mutability because you want to be able to give people identifiers that don't change right that gives allows them to uh view the latest version of something and the way we make that happen um and and by the way this looks a lot like what git does right so git internally uh is a huge uh set of objects that are all immutable and then it has these mutable uh pointers on top that we call branches right so get branches is really just a file that is has a very nice name but has a big um

immutable hash or or like a hash of an immutable object inside of it uh and so ipns works the same way except that the names in ipns are instead of being like these nice readable things um they're the hashes of public keys and what that means is that I can claim instead of having like this this naming Authority problem right like the DNS has this issue where you you need to register a domain name name and you have to pay people money to get a a name um and the same thing happens with namecoin or any of the other name resolver systems uh you have to go through some consensus process to reserve a name instead what we can do is is uh generate Keys we can you generate a

private key and the hash of the public key is the name uh and you know it's not a pretty name there's a way of of binding a prename to to an ugly name um but what you use these ugly names for is that it it allows you to give people updates on that name um by just signing a record so what this means is that if if I have a version of an object right a and I want to up update that to say version B um I move the pointer to now point to the next version and what I do is I craft a new record saying oh the this name now points to uh B and I put that into the network into the the routing system of the network there there's a lot of complexity into how all

of that happens uh in terms of uh you know there's a lot of guarantees around there like who can get to censor Records who can get to um like what kind of attacks might exist how do you ensure that the records reach everyone and all that kind of stuff um and for that you know we can give people links and so on um but the point is uh this has been solved uh for a long time like people have come up with really good ways of doing this uh and we're employing them and we're saying great like this is this is the way you do mutable records in um in a large system and let's use that to um move these pointers over time and give people the ability to get all these mutable names okay so we have this uh this technology which allows us then to

have websites that are uh not hosted on any server that can live forever uh where you can even also have DNS pointing to them uh but the one limiting factor is that these are static uh files so for instance you could store you you could you could host uh an HTML website and then you know going one step further you now we now have pretty Advanced uh JavaScript Technologies which allows us to have single page apps like meteor or whatever um but you know server side scripting language would still be sort of an issue can we imagine some sort of layer on top of ipss where we could have some um more advanced server side scripting I mean equivalent of service Ty scripting like

PHP or something like that so so when you think about um the web today what you have is you have a little bit of of computation spread around and you have a lot of storage right so uh servers do a little bit of work and they have to do it at the server side because they're kind of trusted um the client does a little bit of work and that's kind of trusted for the users's context uh and then usually you just have a lot of data in the server side because they're backing up everything and you have a little bit of data in the client side because they're just viewing some subset of the of the stuff right when you move to the world of ipfs though you kind of like unravel these distinctions and you treat the client and the server just

nodes and so the client can make some operations and the server can make some operations like just do their computation as usual and the content that they produce is just ipfs objects um so though all the content is static you can think of of that as just a transport of data so the same way that you would say perhaps have like a a rest API that gives you some object instead they could just return the reference to an ipfs object they could just return the hash or they could just return the actual object themselves um and that gives you the same equivalent of um of the computation we have today but in in in ipfs world uh you still have to reason about who does what computation

because you have certain kinds of trust um implicit in in the logic right so you don't want like if you have a a sales system that uh has to make sure that accounts are properly managed and so on you don't want to give the user access over that because they will cheat um and so instead you you put that in a trustor environment now a really nice replacement for all of this is smart contracts right this is where where when you think about how smart smart contracts might work uh you can create a whole bunch of really sophisticated uh programs that run entirely in the network and are auditable uh by the network so you can have whole systems that are totally open and and you can

view the source code of all of them and still run them in kind of a trusted environment because you can check that that the properties are are holding right that the there's no double spends that uh the protocol was followed correctly and so on and all the content that they create is just they're mutating pieces of data all of which can just be more ipfs objects as we were talking about before uh you could have these posts uh you know like user accounts and posts and so on but just as well you might have um shipping orders and you know like um Boards of stuff or like you know forums and something um all these kinds of websites that that are all Dynamic um you can make all of them be just ipfs objects and so the program would just

mutate the data structure and just put the data structure back into the network uh which gives you a really nice separation between the the viewers which are just UI on top of the data um it's kind of a way of like just ripping open the the big databases that people are creating and just dumping them straight into the web so right now you have this like construction where the the browser talks to the server over like a wire and um you know like a an htb connection and on the other side the server is like writing stuff to a huge database but you don't really have access to the database uh however many times that database doesn't really matter like you you don't in some cases you do care about privacy

and in some cases you don't and so for the cases that you don't you can just like rip it open completely and for the cases where you do care about privacy uh in reality what you want is a much more secure model of privacy than what we have today because what we have today is just that it's kind of security by obscurity because you just have to be on the on the uh server side to be able to look at everything and what you would instead want is something with capabilities where um the user could entirely encrypt all of their own data end to end and so encrypt things Al and ship to the servers or or you know the other nodes uh totally encrypted pieces of data that they can't read because they don't have the keys um and so only other nodes that have the relevant Keys

could decrypt it and read it and only specific nodes that have the update uh capabilities could like write back um there's a lot of great research done on capabilities uh and a few really good implementations I think like notably Taho lfs is like I think a fantastic implementation of all the um all the capab stuff and uh that's that alongside with EES which is another great project for um kind of thinking about how capabilities work and they might work in distributed systems and so on um but the point is like it's it's a very it's a different model uh it's a different security model than what we have today but it's way way better for the user because uh you get to encrypt things into end you get to decide who looks at what files who gets to update what files

and so on our show today is brought to to you by our friends at shapeshift.io shapeshift is the fast and easy way to trade altcoins and they now Support over 50 cryptocurrencies which includes all the ones you have ever heard of unless you have no life and spend way too much time on bitcoin talk so if you want to trade all coins is the old way of doing it which means creating account somewhere giving them all your data depositing your money and then growing old while hoping for the best or there's a shape shift way which is fast easy and means getting it all done in less a minute while not even needing an account so here's something to consider shapeshift is a company that really

stands by its values and goes out of its way to protect its users privacy one way they do that obviously is by not requiring you to create an account to user service so they don't track any of their users information and secondly when bit license was enacted in the US uh they were the first Bitcoin company to say screw this we're not going to stand up for this nonsense and so what they immediately did was move the company out of the states and into Switzerland so shapes shift is a company that really stands by the ideals of Bitcoin and we think that's really cool and plus by sponsoring shows like ours they really help entertain people like you and also promote growth in the industry so we'd like to thank shape shift for their support of epicenter

Bitcoin so yeah you mentioned the smart contracts topic which which I find particularly important interesting because now I work with AAS now and you know one of the the first things they did was to build a sort of distributed YouTube based on ipfs and ipfs is sort of a quite Central component of it and I was I was thinking about before you know where where is the synergies between ipfs and smart contracts and there's a few things that that sort of come to my mind and and so you know in a smart contract right so you you'll have some code that basically describes the sort of the pro a protocol of interaction for for

some parties right so of course one of the things you probably want to do is is reference some files right so how would you do that now well it's it's not really clear right I mean of course you could put a link in there but then you you depend on the other side right yeah so so what you do is you you um you put an ipfs link there and um we the ipfs link just looks like you know SL ipfs slash and a big hash and then a path um but right now because we're not in you know it's not the case yet that everybody is running ipfs locally uh so what you do is just uh you add a protocol ident so we'll have a protocol identifier that allows people to like

when they click on it um either resolve it with um by installing ipfs or resolve it by by going to the Gateway so so you you can you can use links today uh and they'll people can view them it's just they have to be well formed and I think right now there's a little bit of confusion about that people aren't um people aren't following kind of like the guidelines that we we need to do a better job at like expressing how how this is this should be done right but I think the the nice thing as well is that you you sort of combine the the the content addressing and the location of the file right because you want to have in a in this sort of future smart contract environment right you want to have the security so you want to be sure that that that file is actually the

thing you're referencing so if you can then look it up the same way you know that's that's great and then the other thing is who hosts the file right so that's the sort of another security thing and in a distributed application well if if if you distribute the application depends on some Central server hosting the file well then you know how distributed is it really and how secure is it really but of course if you have something like ipfs and then it's just any party that's involved in this contract any anyone who cares about these files and says like okay I I need this thing to be available can just host it themselves and and make sure that it will always be available and then that's

super powerful right so I think I think that's like a good example where I mean you could probably do it without ipfs but it's so much nicer if you have ipfs yeah exactly uh and on the um on the how do you get it to be hosted so yes uh the parties that are interested in those that those files can keep them around uh and we'll have a set of Tools around helping it uh making it really easy for groups of people to just back up large amounts of data uh there's already for example these efforts that we have of backing up huge uh caches of important knowledge so we we're taking like all these uh open science uh archives like tons of papers and tons of

like um you know creative comments media and so on and just backing them on ipfs um like just backing up all the stuff uh because you know helping to archive all this data in case it like disappears for for whatever reason um and so we'll have some tools but the but the real solution is uh what we so a Sor project to ipfs which we have which is called filecoin uh and that's a way where you can get you can incentivize the entire network to help you back up stuff um so when I said earlier that uh I would come back to like describe like the the strict uh you know the the designed constraints around ipfs and why it doesn't you know kind of like force other notes to to store content um this

is it so people would not install something like ipfs if it meant that they might be downloading stuff that they didn't explicitly request in that um you know if if if to view certain files they had to like download other stuff they didn't want to download and store it um they might do it but the the big reason they won't is that a lot of people would just start storing illegal stuff and people just don't want to store that even if you encrypt it people would still not want to do that uh this is certainly true about companies right so so large companies would never want to um use something that would just start downloading all this encrypted stuff of which some of it might be really bad illegal stuff um so ipfs strictly has as a design constraint that

you never download anything that you don't explicitly request um and that's like the default operation like you do not download things unless you explicitly request them um at the same time you do want to be able to build a certain Network that some nodes can say hey we want we we have a lot of dis space we can offer to back up stuff for everybody U but we want something in return and so theide the idea there is that um a certain set of people will set up discs and trade those for for money right and so the the you have this the situation where um in order for for discs to keep connected in the network

people have to keep putting in value right like there's there's this constant value expenditure that people have to have to have it's similar to hashing in a way right like people are expending a resource uh so in the Bitcoin Network um people are constantly expending electricity and uh to power these machines hashing constantly um to power the Bitcoin network uh so similarly you have a situation in in storage where people have to constantly be be dumping money into keeping bandwidth lines open and Electric receive for running discs and you know swapping out bad discs and all this kind of stuff like this constant expenditure of value um to keep data around and though that of course is getting cheaper over time it's not zero it's not a zero cost and because it's not a zero cost you need to um

remunerate that with value in some way and so that's where the idea for Falon came out right of saying look um we'll have two protocols one protocol which is ipfs and helps everybody think about where the data is located and move it around and another protocol which is fcoin which allows people to to get together in a network uh and then trade disk space for for cryptocurrency yeah so that I mean that's an obvious an obvious need right because otherwise how are you going to have people actually save stuff can you talk a little bit more about how fcoin works yeah absolutely so uh fcoin is very much based on bitcoin

and it's a a the difference comes in the proof of work uh system so instead of having um so there's there's a layer an addition layer there which includes a proof of retrievability this is a cryptographic construction where um a certain node has to prove they're holding a specific file locally uh and you can organize that proving process to build a um a network with lots of nodes that are competing to prove that they have certain uh files at the right time um and organize them such that like you have this network that keeps growing with a large data set that keeps growing meaning like data that

people are requesting uh from the system um or requesting the system back up for them uh and as it grows uh people miners that are coming into the system with dis space uh can earn filecoin as a currency for backing up that data um and so like the the what it looks like to to users is that they there's this spectrum right they can be on either ends they can just be users and just uh kind of hire the filecoin network to store data for them and so they would either uh they would buy filecoin from the network by exchanging it for Bitcoin or something um and then spend it uh to on the network to hire it to back up

data and once they add this data other nodes on the other side of the spectrum would back up this data and over time prove that they have it uh and serve it out to earn that file coin or to earn file coin along the along the way uh and so that allows users to be anywhere in the Spectrum right you can be on one end and just be a user you can be on the other end and be uh just a a minor that's storing data um for other people and making money or you can be you can hover in the middle and just kind of come out even just store enough data that you um get enough file coin to back up your data and so you can be pretty much anywhere you want and so how does that work from a sort of monitary

perspective um do you have some sort of issuance that I don't know it's like deflationary or inflationary or right so like you you don't want um yeah so so the you'll have a system where you want it to be pretty cheap to be able to use the network uh you want it to be pretty cheap to uh so like the units like when when you get down to like the least divisible unit you don't want the unit to be too large to be able to like use a network of course there's like side protocols that you can make and to like you know split even further but like you don't want to do that um so you want you you want the the the price of like the the smallest possible unit to be low enough that the people for a while um can use it but but what you

ideally want is the value of file point to track um to to to have a floor and that floor being the value of the whole network meaning that the network together um running the service of storing files for everybody will have a certain value uh that that will include the actual physical value of you know getting the discs and storing the data for people and the value of like organizing this whole network uh to happen uh and you want that to be sort of the floor and you can get it to be really cheap enough um and you it's the same thing with Bitcoin right so when you think about Bitcoin you have this massive network with with lots of people mining um and and sort of like the floor of the currency is uh it's it's a very

low floor that we like we're or just the magnitude above that floor but the floor is as a payment processing system or as a transaction system um Bitcoin is a valuable thing to have uh to be able to process these transactions um and so that lends some value to the network and so that so so in a sense there's like that at the very least um so does that that sort of make sense sure um yeah I mean I was just I was just curious so so what does that mean that so is you know for example there is a certain amount of there will be a certain amount of file coin that are issued each time frame and then you get it according to you know the proportion

of uh of files that you're hosting on a network or it will be like you know the more people host files then it's just like the more uh gets issued or how how would that work yeah exactly so so you can follow a um so I tend to to like the the deflationary aspect of Bitcoin because it gives a really strong incentive for people to join the network early and to work with the network early um and you can always build either other currencies that are kind of companions to it uh that can give you the the inflation like the the benefits of an inflationary currency um so uh though it is not 100% settled uh it is it looks very much like

filecoin will will be strictly a deflationary currency as well like there will be a certain limit of filecoin uh but the divisible unit will be really large so that for a long time you can keep subdividing um and get to a point where where you want the value to be to be pegged by um to have that floor of of the value of the network um but you want to also incentiv people to get into the network early uh and that's a really powerful uh game theoretic mechanic uh because it rewards people at the beginning um and it makes the the coins that people earn early uh be worth a lot in the long run if this if the network

works out as a whole um that one of the one of the problems with inflationary currencies is though with an inflation currency you would get like this this really nice um system which would uh like o over time you wouldn't have to like like you you could align the value of the currency much closer to what the value of real storage is um but if you do that you might not generate the the necessary um incentive for lots of people to set up um the network right so so in a sense when you think about like the worth of bitcoin today uh and how much money people were getting in Bitcoin at the very beginning of the Bitcoin Network um a lot of people got really rich because

they worked really hard to push this forward uh and you need something like that to cause the effects that we need to build out this massive storage Network to build this build this whole thing out you need a lot of people working really hard to set it up um and you want to reward that you don't want to like just um you know inflate it over time and be like okay well like thank you thanks so much but like um better luck next time right so what's the time frame here it seems like at the moment you're prioritizing ipfs and that's the thing and and will file filecoin come later yeah so so um we we decided to be uh to push out ipfs uh sooner and to because we want we wanted to have

filecoin out um sometime this year when we first started like this was like a year ago uh when we first started both projects uh we wanted to have FAL out sometime this year um but along the way we just saw so much traction with ipfs and so much so many people just wanting to use it and so on um and the value of of having ipfs as as a transfer for the web was so such a compelling and important thing to have um that uh we kind of like redouble our efforts there and so this is kind of like the the big important thing to get right um because at the end of the day if you don't build out a distributed Network um that will just create tons of data uh to be hosted

by these Services um the decentralized and distributed storage won't ever be able to compete at all with centralized systems like there there's just no way uh things like S3 and Google cloud cloud storage and so on are just orders of magnitud better like the uptime is is way better you can just pre- encrypt everything and use them as a storic system and you know store to S3 and store to Google Google cloud and store to uh apple and so on and you know get your redundancy there and maybe a few other providers here and there uh but that will give you a much better system than most decentralized systems the way you beat that the way that you you can try to create a competitive Network that can actually um rival a system like that um is that a you kind

of you use those systems at the beginning you want to create a system at the beginning where it's actually profitable for users to set up nodes on top of S3 or set up nodes on top of um other systems like that and mindful fcoin the same way that people were mining for Bitcoin at the beginning on AWS and so on uh and second you want to create like enormous uh an enormous uh reward for people building out the network to succeed uh so you want to incentivize these these massive mines uh these Bitcoin mines in in China to also just start stocking up on hard drives uh and starting mining mining fcoin but they won't do it if there's not a huge reward at the end of the at the end of the day right and so to cause that

enormous um scale like when when you look at the the computing power of the Bitcoin network is this this astounding thing right like you it passed uh several super computers uh like like I think two years ago and um and like now it's like the most it's one of the most uh it's beyond the most powerful super computer in the network uh it's just like this insane amount of computation power devoted just to hashing um and that's the power of strong monetary incentives and so you need to create something similar to that to build out a massive storage network uh and in order to to do that you need a strong reward and in order to create the demand for the storage you need a large consumer

system you need a system that is just going to create tons of data um and these are backing up all of what we have right backing up all of the important scientific data sets backing up uh all of the media that's out there like all of the creative Comm media taking all of these video sites that have um you know tons and tons and tons of video uh and they you know it's really expensive for them to host it just host it on another another systems as well um and so that's where like the the Dual nature of of the system comes in right like you have um ipf as a way to transport data and to generate this massive amount of demand for for storage and on the other side you have file which is gives you a very strong incentive for miners to build out

this really strong storage Network um coupled with that Demand right so it's it's storage is is a two-sided market and um the reality is that there exists some set of applications that require distributed storage like this kind of applications that are based built on top of Bitcoin or ethereum and so on but the storage requirements are minimal right like you can just host it all on S3 uh Google cloud and Azure and like that's it you don't need anymore um and so for to really make these networks actually valuable and give some some real reward to the ant user you have to couple it with an enormous demand so uh how how then I mean if we sort of extrapolate into the future and you know file uh

ipfs is successful in some order of magnitude and we then have uh uh an economy of file storage uh that that is established and you know these miners in China as you mentioned start uh having hard drives and those operations grow bigger and don't we just get back into the same system or sort of scenarios we have now where there are data centers hosting the data I mean I guess the ADV the the differen is that it would be distributed but yeah so so I mean you don't want to host the data necessarily on people like you don't want to host people's uh data on laptops right and you don't want to host the data on on mobile phones right you actually want

dedicated machines but the nature of the dedicated machines what you want is a certain kinds of guarantees one is like if you have a marketplace where anybody can plug in a rack of discs and start earning earning money um that lowers the barrier of Entry so a lot of systems can come in and play and and be part of this huge huge Network um and then the other side is if you allow caches like filecoin nodes to be added anywhere in the network like not just in the backbone but like really anywhere in people's homes in like universities uh in you know large event spaces and so on then there's an incentive for all those organizations to just run these machines locally um and

then the content providers can or or you can run algorithms that figure out what content should be placed where to be served more effectively right so so the the CDN to end all cdns is a CDN that can put content into the user's home like beat the speed of light like put the discs and all of the content they want to look at or view or like the majority of the big stuff collocated with them like exactly in their near proximity ideally in the same physical Network um and the only way you can get to do that is if you incentivize large amounts of users all over cities uh to just start building out these cont caches both in the in the in the user side of the network meaning like on the other side of the ISP kind of like in the local area networks and

so on and in the backbone but pretty much everywhere uh like not bounded by by what a certain uh company and so on might do do that sort of make sense yeah so what what you're suggesting is that essentially data storage is no longer only limited to large data centers that have infrastructure that can um that can provide redundancy and and and S of near uh uh low low latency uh access to content through you know having multiple copies of this content in their Ser on around the world to um more localized storage where you

may have a data center in your you know sort of local geographic area or uh your ISP May provide some sort of ipfs node uh next to your you know sitting right with the death slam your ADSL connection or something like that yeah exactly and uh what you also get out of that is that you go against this so right now storage is getting cheaper way faster than BWI withth is getting cheaper like that's just kind of like the the nature of the curves um and so our storage capacity is increasing faster than the bandwidth capacity and so our relative perception is that things might seem to be getting

slower instead of faster it's kind of like this weird Behavior because our data usage is just increasing to fill out the discs and the capacity of the discs so you get the situation in where you have um like you just create more and more and more media to store in in you know whatever disc capacity you have but it becomes more difficult to move it around the network so what's really valuable is bandwidth uh so storage is valuable but it's not as valuable as being exactly in the right location uh so that's that's the more interesting part of the of the whole network but in order to get to be able to do that sort of a thing you have to first build this massive storage layer um you have to level the playing field like make it really easy for people to be part of the network make it

really easy for people to like join and start um providing storage and so on and you have to uh also make it possible to for the groups to not not just control the network as a whole right for not one entity to control the whole thing so you know if we you know we can we can sort of look at the future where that that storage layer would be there and everything would be would be stored uh on on an ipfs uh system uh in more near term what are some of the most ex exciting use cases that you're looking forward to seeing so that's sort of for for file coin right so for the most exciting use cases right now for ipfs it's stuff like

um like just distributed websites right so people are already starting to build these uh so yeah you can take a static website today and add it to ipfs and it's like way easier nicer simpler hosting and that's really cool but what becomes really interesting is to make websites that are completely decoupled from the from the backbone meaning um websites that are that have no origin server websites that just write on clients directly and just are perhaps potentially entirely encrypted end to end right so the entire payload of the website is this encrypted thing and you get this encrypted thing you load it up by an application your browser like decrypts it loads it uh starts doing some computation or whatever and takes all the products and encrypts them again

into to end uh and sends them somewhere else and so like that's that's I think like an extremely exciting part of this because not only do you do you add this like uh you put people's you you put the power back in people's hands right so so we have this problem right now where um all these these important applications that we use day-to-day like what we depend on in our daily lives uh from the things that we use to sore our files on to the messaging systems that we use to communicate with our family with our loved ones with our co-workers and so on are all these centralized services that own all of the data and you don't have any control over that whatsoever and so you can't you can't encrypt it end to end because the applic like if it's a

messaging system like you can't really use it I think apple is the only one who's who's encrypting everything end to end um and so like that's that's a big win uh another is that you you can get applications to just work entirely offline so that if your network gets disconnected from the backbone everything can still work right like it's kind of silly that today um if you were sitting next to somebody else and the your connection to the backbone breaks you can't collaborate on documents you can't uh work on certain kinds of applications like it's really silly and we we know we have a technology today to just fix this problem we just haven't um and so what we're reallying makes it a lot easier to do this uh and that's I think an extremely set of like really interesting applications that are going to spring

up so like did the use cases or I mean ipfs right the vision here is like super enormous and uh it's it's interesting you know we we talk about a lot of these applications and they're they're like really cool and interesting but like I'm sure you think a lot about you know what's the sort of the end game so in your you know most optimistic scenario when you know like everything goes right and people adopt it in the way you want them to adopt it what's the internet going to look like 15 years from now or 10 years from now so in the long run you have a system where you have a a a fabric like the entire fabric of the internet is this

like computable system where um you compute things in the right Place based on where the data is located like you you have a network that is just adapting entirely to usage and being extremely efficient at how it uses uh those resources both computation and storage bandwidth and so on um you have a network where people can plug in systems and algorithms into the into the network um and can get compensated in microtransactions of stuff um so this is the kind of stuff that's super uh exciting down in in in the long long run um but prob I think most important is you can have these networks that are entirely run by protocols and not run by by ISP so so we're talking about like

taking the ISP and turning it into a protocol uh and so instead of having one organization that says okay we're going to own a network and put it together and run it you have networks that can emerge and arise as protocols and and collaborations that come together through rules that everybody plays out um because that's how you can scale out other systems like Wireless right so we haven't really seen massive usage of of wireless mesh like we've seen some very large deployments you know there's some in Germany there's some in India and so on um but we haven't seen these massive Wireless deployments because isps don't want to break that uh except that if you enabled uh regular people to build out

the network bid by bid by bid um that's where the incentives can actually play out in in your favor to build out this huge network uh and you can do that with protocols you can't do that with with like these huge Capital Investments it's not not worth it to a lot of these companies to set up and deploy Wireless um but it might be worth it to some specific individuals uh in like a small scale and you can get to fill out all these gaps um so so we're really talking about a a a an internet a huge Network that is hyper efficient um that is encrypted end to end where the entire applications um live and operate entirely where they're supposed to be uh you know based on where the data is based on on the properties of the data who wants to share what with whom what

are the permissions um and where you can have Computing systems that are almost kind of like autonomous and evolving on the network so this is this starts to get a kind of like um this starts getting into like like what happens when you when you start like releasing these these smart contracts onto the network with like these optimization systems um and it gets potentially like kind of dangerous right like you don't know what some of these smart contracts will do like some people will program like some pretty stupid bad things and you have a smart contract that will you know um make money and continue to make money by and paying other people by doing something evil right and people will have make

have it hard it'll be hard for people to stop that um however on the flip side you can get these autonomous agents that can um work within the internet to optimize the hell out of the network and to make it much much better and simpler um and you can get this like comp competition going uh when where more efficient systems kind of emerge and can very quickly deploy through the entire network and and gain gain um to a certain extent like gain usage uh so we're talking about like the the full Market of uh like turning turning all of these networks and uses uses of the network into a hyper optimized uh Market uh and on the and then you can think about like computational systems where um all of the code that you're

running is just a dressed in in the system so you you no longer have to think about shipping code from one place to another or you know uh libraries and files and so on you just kind of like write functions and just deploy them into the network um I think Amazon Lambda is probably the closest thing to this I was actually very surprised when they when they came out with this I think like there there's some very smart people there that are thinking way ahead of the game usually you don't see this sort of like um kind of like investment on on a on a unproved idea so much but like they realize that this is kind of what what it's all going to where you're going to shed away the notion of a server you're going to shed away the notion of an OS when you deploy an

application all you care about is writing a function and deploying it somewhere and so you you can think of the end state of all a lot of the stuff as these agents that have a wallet associated with them and they run some computation and they they hold some cryptographic keys and when they run that computation they might be rewarded monetarily for that computation it's the same way that um that websites sort of work today but today you have like this large infrastructure running in the future you might just program program them it might be an individual that like programs one thing and just deploys it and it just runs entirely in the network it pays for it its own storage it pays for its own computation it moves itself around and and earns value that way yeah ju this is uh amazing for sure and we we

definitely going to have to have you on again at some point but like we're running we're running really late although we've no no it's not at all it's been it's been super interesting now now before we wrap up one thing so the company you run is called protocol Labs uh can you talk just very briefly about the company and particularly also what kind of ways of monetizing or or sort of business model do you think you will build around that yeah so um I started this company called protocol labs and I think it's it's uh important to kind of tell like the story of why um I decided to go and do this um when I came up with I FS um I had a few options um and so

like one option was potentially like you know go in and uh try to develop this in my spare time while I work on something else like that that just wasn't going to work it's just an enormous amount enormous amount of work to put all create all these all these uh protocols another option was to I don't know like go go into this is fairly academic uh so you could conceivably get a PhD and go do this and like I saw that as a complete dead end in that most PhD work does doesn't produce um usable things in the real world it produces better papers and better systems uh and better ideas uh but we actually have a surplus of good ideas right now I think like the network is um 15 20 years behind the best ideas so like when you look at uh

the edge of where Academia is it's just 15 20 years ahead of what we have deployed in the network um so when that's the reality what you really need is a system where uh you can take a lot of those good ideas and develop them and deploy them into the network uh so that happens in a few places in the world it happens in in a couple of like really big companies uh namely Google uh apple and Facebook to some extent Amazon and a few other places they develop these better infrastructure systems and push them out into the world many times as part of Open Source it also happens with a few the few academics that are also really good programmers that actually go and like Implement and deploy this the things and it also happens a lot with

open source so specific people that come together and say you know what we really want this thing to exist we're just going to build it uh but those two latter routes are fraught with problems they usually don't have enough uh resources to build out something um really meaningful and something really big in fact we look at something like Bitcoin as this insane achievement of one person who managed to come up with great ideas uh you know building on the work of others uh over time and manage to uh piece together the right of of incentives uh constructs a network manages to implement tons of it and then ships it to the world right and yeah he had um he or she or whoever might have been multiple people uh had help from

other from others but um it's still a tremendous amount of of work that went into producing uh Bitcoin uh the same could be said about the amount of work to produce uh bit torrent and the same amount of work to produce something like git although git had the help of the entire Linux kernel Community um though it was a lot of Linus and a few people uh there's all these examples of amazing pivotal pieces of software uh that are wrapped up with a whole bunch of new ideas uh that change the the face of the network for forever um and those kinds of developments um happen pretty rarely because it's very difficult to couple the really good ideas with a really good development team with a really great

deployment plan and all of that has to happen or you don't get uh the good solution right um so I I'm a huge fan of two labs in the past Bell labs and Xerox Park and I think that those two Labs produce so much technology that we today take for granted on use dayto day and they managed to to um set these huge bets uh on the future and managed to create tons of great valuable stuff and park created a lot of stuff from scratch Bell Labs also did too but a lot of what bell Labs did at least the that I really care about um where I'm referencing is specifically like the the Unix team within Bel labs they refined a lot of older ideas and they refined a lot of

other kind of like surplus of academic ideas that were around and they refined into really good uh development uh so the the development and the deployment part they got perfectly and they managed to deploy this amazing thing that just every single system except I guess Windows machines run on Unix um and that was achievable because they had like this this focus on just understanding what was the important thing to do building it and deploying it and what I want in the long run is to build a group that can do this for the internet for the network so my my plan and my goal is to build a what I call an rdn lab so research development and deployment um where we can look at the entire internet stack figure out what protocols are broken figure out where we

can improve the network and devote the resources to do it um and now the interesting thing is that before 2008 protocols didn't make money right protocols kind of got created by people altruistically or as the result of um Government funding actually most protocols uh that we use today are the result of massive investment from the US Government funding the development of of the arpanet and also other European agencies funding the development of the OSI model and so on um so we're writing on all that uh massive Investments except that today we don't have that same level of of investment and yet and so our Protocols are kind of lacking however Bitcoin came in and Bitcoin changed the entire world

because it allows protocols to be coupled with a with value so now you can have networks that create protocols that um have a value influx uh into the group that is creating and maintaining and improving and helping run the protocol uh and that just changes everything and so what what we are doing at protocol Labs is crafting protocols uh some of which will be be cryptocurrency incentivized and when they are cryptocurrency incentivized some portion of the currency will be allocated for protocol labs and we're not exactly 100% sure of how we're going to do that in the long run because there's a few different models you can do the sort of like pre-allocation as some other people do or what I'm more of a fan is releasing over time so you have like

this notion of like as the the currency continues to be um successful some larger and larger piece gets unlocked for for the development team um so this can work uh and you know it's worked for for ethereum ethereum did this very successfully um and it's worked for other groups and so we we see that as one potential route but it's not it's not the only route that we uh that we are exploring there's another side to all of this which is that when you look at ipfs it's not a very cryptocurrency Centric thing it's actually pretty standard in terms of the regular Network so a lot of services can be built around ipfs that uh can be services that we run and that we run for the network or that

we uh sometimes sell to companies right so there's these massive entities in the internet like the Fortune 500 companies that spend a lot of money adopting new technology and so we can help them adopt a lot of new technology um by Building Services that make it easy for them uh so there's like all these different uh ways to make money around protocols uh and so we're exploring a lot of them uh though the main one for a for a while will be just filecoin um I hope that that kind of makes sense but no absolutely and I agree with you I think that's that's one of the amaz amazing things of Bitcoin as you mentioned there that incentivization which is one thing that Satoshi got brilliantly right uh and and the ability actually yeah to

have open source protocols that have Financial value tied to it so that makes perfect sense so yeah Juan thanks so much for coming on it was it was a great pleasure having you it was super inter thank you so much by the way this is a fantastic interview uh great fun chatting and happy to come back whenever well we'll gladly have you on at some point and go for another an hour hour and a half yeah and I actually ironically this is our 100th episode and we were we were like like oh we didn't get around to sort of like doing something special but I I think this was actually quite look what I got oh okay well I didn't but Brian didn't get a ball of champagne but I have a

ball of champagne I have one in a so uh yeah so thanks so much and of course thanks to a listener Lots I know lots of you have been listening for a long time um and yeah episode 100 it's exciting so I just want to say how how excited I am about this I mean I I just before the show I was uh I don't know you said something you mentioned something said oh you got this process all down I said ah you know 100 episodes like it's 100 episodes already seems like we started just yesterday I know so uh um yeah so that's it but yeah we we'll be back for the next 100 episodes starting next Monday which with the 101st now uh the other thing we've been doing for a while and

we keep doing that this is this like bribery t-shirt contest which basically means you leave an iTunes review and and we send you a t-shirt uh and you know you can say of course wonderful things or or that this was terrible and you hate the internet now that you've heard all these things um and yeah if you do that just send us an email at show it bitcoin.com and yeah we'll put out episodes every Monday you can subscribe to the show on iTunes SoundCloud or of course watch the Youtube the videos on YouTube and that's at youtube.com/ appcenter PTC and yeah that's it so thanks so [Music] [Music]

much what