 All right, welcome everyone, welcome to Blockchain of Things Boff, thanks for spending your evening with us and I have a few slides so I'm just going to kind of go through those really quick and then hopefully we'll have a spirited discussion so if you have a question raise your hand or just shout something out and we'll go from there. So just a quick introduction about myself. I'm CTO of Foundries.io, I've been in the crypto space since 2011. Red Satoshi's white paper was enamored with the idea after the financial markets in the US crashed and then kind of been working towards adopting, seeing blockchain technology and distributed ledger technology adopted in the mainstream areas, especially in the embedded areas which I already work in. So I did some work with the IOTA Foundation this summer. I did some work with the IOTA Foundation this summer and they've got some interesting challenges working with real life applications so I kind of want to share some of my experiences with you guys and we can have a discussion on how we get these things deployed in large scale. So the first question you should ask yourself is do you need blockchain? It gets thrown around a lot and so there's a nice flow diagram here. I don't know if you guys can see it. It's a little bit bigger but basically it says are you securing formalized digital relationships? Yes or no? If you are, is the data dynamic with an audible history? If the answer is no then it's static data and it rarely changes so you don't need a blockchain. Yes, it is a system of record. You must proceed to the next step. Should or can the data be controlled by a central authority? Yes or no? Is the speed of transactions more important than the most important consideration? If not, then managing and securing digital relationships is part of a system of record over a layer of the internet is what you actually want and that's when you need blockchain. So there's a lot of projects out there that may not actually need it. It's more of a buzzword or it's not really adding value so kind of go through this flowchart if you're thinking about using a blockchain project. So I was going to do an LWM2M live demo but the internet here has been kind of hit or miss so I don't want to try to attempt it but basically we have some blockchain enabled light bulbs. I may say this is a ridiculous thing but it uses LWM2M as a lightweight machine-to-machine UDP protocol and we're able to deploy microservices on a gateway that will essentially put sensor data, model number, manufacturer, software version, serial number, die temp, all that good information immediately on a distributed ledger or blockchain. So basically what happens is the microservice registers for events with the LWM2M server as the callbacks are made it adapts it to MQTT and then the MQTT stream is read and then published under ledger. So typical use case of what you see out there for things that are you know sensors that are using blockchain or distributed ledger technology this is kind of what we've seen right now and there's another couple of use cases as well. So this is kind of how it looks. So we have our micro platform with a bunch of containers and eventually it's just one piece to a larger puzzle that's just publishing the data where you might want to use something like this is if you have sensitive data that you need to make sure there's a system of record for whether you're operating power plant or something very safety critical it might be a good idea to take a look at blockchain transactions. So the other thing that I want to show you I do have a demo for this is decentralized Git so I don't know if anybody noticed that GitHub's having problems today? Anybody? Yeah well I couldn't push I pushed a repo tried to clone from it and then said it didn't exist and if I hammered on it a few times I finally got it to clone. So I actually think this is probably more needed than we actually realize. GitHub and even GitLab services that are provided are centralized service even though they're multi-regional there is a single point of failure and they're load balancers and it's a single entity that can fail and there's a lot of code that we depend on for infrastructure projects that's hosted on these things. Does anybody remember the kernel.org hack when the Linux kernel sources were tampered with? Distributed technology I think could help there as well so one of the backbones to this is IPFS interplanetary file system it's a peer-to-peer hyper media protocol that's trying to replace traditional HTTP protocol. It's got a ways to go it's still pretty early it's been around for about three years but it's got some interesting aspects that we'll talk about in a second. So how do you run this stuff what do you have to do so you can run it in Docker and that's basically how you do it let me just see if it's actually running here before I get my demo in one second yeah okay we're good so then I've got a fork of a helper for Git that you can just install with pip it's Python based and then you'll have the IPFS remote helper so you can how do I import an existing repo well you clone it you add a remote and then you push it to a remote pretty simple then it's going to spit out this hash which is a hash of the public key and then you can clone from that public key and you can add a file and you can commit something and push it back now what the problem is it's not very useful because it gives you another hash right which is a pointer to the latest head and so this is where things like IPFS is working on IPNS which is a name service so you can associate URLs or domains with hashes and so when you do a push basically what would happen is then the new public key hash comes would be then updated with IPNS and then you could pull the latest heads directly from a static URL so I think that's that's one piece of it now this is just the storage aspect of it this doesn't actually give us the web front end stuff so I'll show you this in a second so what actually needs to happen to be fully decentralized so you need to decentralize application the front end like GitHub or GitLab for code review username spaces all the fun stuff that we use today then you need the IPNS to automatically update the heads and then you also need an incentive for an IPFS cluster to store your Git objects which doesn't fairly exist and then you can use IPLD so its protocol labs is defined a data format for use on blockchain so you have a blockchain that references IPFS data that's how there's a data interchange format and I mean really let's just be honest Git if we could get a lot of people using a decentralized Git server that would probably be one of the ultimate tests of blockchain whether we can scale to that many users think about how many times how many commits are made per day if we really think this technology can scale and work then this is a pretty good test I would say so before I go into there I can kind of show you guys really hard to type like this so let's just we can actually just run through these steps to show you it's not vaporware this actually works so this is that LWMTM to MQTT broker projects just in case you're wondering so Git and remote this is really hard to type like this so now I've stuck that source code into IPFS on the local node that's running on my laptop I think that's the important distinction to make here this isn't replicated across the network now now the way IPFS works is kind of like endpoints kind of like how Tor works so if somebody running another IPFS node wants to access those files that I just pushed they'll make a request and then that request will be routed across the peer-to-peer network to my node and then those files we pulled up there and serve through their notes so that's kind of how it works now so when I was saying IPFS cluster if we wanted to have a true decentralized Git server what we need is we need somebody to run a bunch of IPFS nodes in a decentralized way so not in a centralized server so a single data center and there would need to be an incentive for those people to store those objects because currently why would you store somebody else's Git repose if there's no incentive to you so it's kind of the economic model behind how this might work is what I want to talk about all right so now that we have this let's try to clone that so if I take this guy here and then I think it's okay so if we go here you can see that is the head there that's the head there so I was able to store it on IPFS and bring it back out obviously using hashes for Git repose is really not very human friendly so that needs to be improved but like I said IPNS probably is the way to deal with that is there any questions or comments or is this interesting to people to have a decentralized Git server more or less maybe how many people use blockchain every day how many people have used crypto currencies or blockchain raise your hand okay okay good video just trying to see where the audience is at here okay so then the next thing I think it's kind of interesting now that you've seen you know Git object storage on a peer-to-peer network is over the air updates I think this is more applicable to kind of maybe the industry that we're in where we have the need for this on both the Linux side and even smaller devices with RTOS so the idea here is it's similar to the way the decentralized Git server would work the nice part about IPFS would it can run on a raspberry pi and it can access cluster data so if there was an incentive to store firmware and maybe even a manifest that's signed sorry maybe I do need a mic to walk around with if there is an incentive to store firmware updates or manifests that are signed that tell devices which firmware to pull what would be interesting is a raspberry pi or any small embedded device could run an IPFS node it doesn't have to replicate any of the the objects that are in IPFS but it can access it in a peer-to-peer way so in a decentralized manner it can actually pull those files so what what you could do is each IPFS node actually has a HTTP web server that can serve only on local hosts unless you enable it to to serve outside of the firewall so what you could do is actually if your services already consume HTTP data for firmware downloads you could make a request to the IPFS server to request that firmware object via HTTPS now let me just show you what I mean by that so this is the hash that I pushed for my Git repo now my IPFS node that's public runs at this URL and that pulled that file off my laptop so went out to Hetzner in Germany came back and pulled it off my laptop so the same the same thing could actually be running on a raspberry pi and you could pull firmware more or less seamlessly because it doesn't have to know about the IPFS protocol natively you could use HTTP to pull the firmware object and and do the download so you could use os tree you could use this with docker you could use this with just about anything that uses HTTPS and I think that's kind of a key point I want to make about software updates is that yeah this is this is easy easily accessible on very small footprint devices so then the next thing I want to talk about is scaling because I think this is our this is the biggest problem with blockchain distributed ledgers today this is the arms race that everybody's trying to get to is who can have the most transactions per second on a blockchain and I think this is going to be important for doing things like decentralized Git Ethereum they basically had to say stop using Ethereum Dapps the other day because they're at their maximum capacity and there's not a lot of users of the apps on Ethereum so we have a ways to go to improve this but I think the way we do this is we have to focus on using decentralized technology on the edge and what I'm getting at here is don't use light nodes in RPC and interfaces right because you can have a bitcoin full node or whatever blockchain network you have and you're exposing an HTTP interface to do API calls to but what that's doing is it's creating a centralized point of failure right so whoever's using that node or hosting that node if that goes down you're going to have to find another node to talk to to access the blockchain network so like what I was saying with IPFS if that node runs locally and you don't have to store all the files you can scale all the devices that can access those files because they don't need to store them they can just fetch them as a read only way into a decentralized network I think that's important distinction to make because a lot of technology even iota included you can't run a full node with all of the ledger on a Raspberry Pi there's just too much data to store there you need too much flash to do that it's just not feasible and I think that's part of the scaling is that we need to figure out a way to have devices access decentralized networks without having to store the entire blockchain or have a way of compressing it because it's just not feasible to get into small footprint devices right now and I'm curious if anybody in here is played around with it and what their thoughts and feedback is maybe anybody okay well that's all the slides I had so I want to open it up to talking about use cases that we've all had or that we're interested in maybe there's a problem that we think we can solve with blockchain and you guys want to just ask a question anybody what what were your I didn't see uh or maybe I missed it the comments about the iota infrastructure that you had yeah so um they've got an interesting one so they have a really neat district just directed acyclic graph um and that that's their dag and that's where they're storing it so it's not necessarily blockchain but what they do is they have full nodes right which basically have the entire copy of the dag locally right and there's an rpc interface uh that you can access right and so you can make transactions through this rpc interface and so a lot of what technology they've developed is uh we can run on a Raspberry Pi in fact that lwm to m demo that I kind of explained earlier that's what it's doing it's taking the data that it receives locally and then doing an http request essentially to a full node that can talk to the distributed ledger and then saying I'd like to make a transaction and here is the data that I'd like you to transact now what I'm saying about that is that's a single point of failure if that node goes down you have to have a good way of finding another node right in a decentralized manner and that's what you want to avoid and so it's kind of one of those things that why not build a web service for something like that if you want to store data really that raspberry pi should be able to put data directly on the blockchain without having to go to the well not necessarily the internet but to use a peer-to-peer protocol directly from the raspberry pi does that answer your question so we've got we've got scaling problems to deal with essentially uh the bitcoin blockchains are 165 gigabytes currently I mean think about how many embedded devices with that would fit on you need an ssd even spinning drives are it's hard to sync the blockchain on those so you're talking about high high performance ssds and as the blockchain grows and bitcoins just had its 10-year anniversary uh we're at 165 gigs just thinking the next 10 years I mean and imagine if you're putting data into the blockchain it's just going to only grow exponentially and that's a that's a problem that iota is trying to tackle actually so they realize that there's zero fees there's no transaction fees there's no transfer of value to put data on their their DAG but what that ends up doing is it creates a lot of extra bloat right and so all these phone nodes that are running have to store that data and so what they've come up with is uh finding the shortest path so there's milestones in the DAG that this that everybody gets consensus on right and as you're going through if you can find the shortest path the data the transactions that you have made that you want to store then you can prove to somebody that you've made this transaction and other nodes can verify that you made that transaction so some of the use cases they've had is they're working with you know car manufacturers and it was making two transactions a day to read the odometer in the morning and read the odometer at night and then put that data on the blockchain right and just to be able to do that they can they can deal with it now but when full nodes say look I don't have a terabyte of space to store all this data for they they basically take a snapshot of the DAG and they move it forward so they lose all that immutability right I don't think a lot of people understand that it's not really immutable on their their DAG unless you store the whole thing and so they're looking for ways to say here's the transactions that I care about prune the rest of the tree and so that I can still prove that I made this transaction and that this data is immutable but I don't have to store the whole thing so those kind of solutions are what they're what they're working towards why would they why would they do it in this case of distribute or other type of blockchain where there is no clear money involved well so you would have to set a blockchain alongside IPFS right and that's what I was getting at with the incentive right and so kind of my off the Ted had thoughts of how I would build this project is you'd create a token with a blockchain and essentially if you want to create a repo like I want to go and create a new repo on github you'd make a transaction on that blockchain saying here's my 30 tokens or whatever it is right I'd like a repo created and so you put that on there in IPL or IPLD format which is the interchange format between the IPFS and the blockchain and so then the IPFS nodes would see that that transaction on the blockchain and say I'll replicate that right why would I replicate that because I want that block reward right I want the transaction fee to basically store that data so they would go and say I'll take that and I'll create that repo for you and I'll pin it so then all the cluster ideally that wants that that token that token reward would pin your new repository so then you'd have space to go push new code and what they would do is they'd come back and say here's my proof of replication right and then the blockchain would get consensus on okay yeah you've actually replicated you've replicated you've replicated and there'd be a certain amount of nodes that would need to replicate before they would say okay here's the payout so then all the nodes that prove the replication would get the payout so there would be a financial incentive to do it now there would be no proof of work there's more of like proof of replication is what would be in place of that that makes sense no go ahead it's okay I it's fine fine for me yeah thank you yes so Filecoin is built on IPFS now here's my here's my beef with Filecoin I don't think we need general purpose file storage that would be there's already coins out there that are doing it and if you look at the actual numbers of people that are storing files in a decentralized manner just random files like there's Google Drive is pretty good Amazon S3 is pretty good it kind of goes back to that first slide as why do you want to decentralize right so I think while they've had a really successful IPO they raised 256 million dollars they still don't have it released today but protocol labs is the ones that did the ICO and they're building IPFS and that technology is pretty good I think they're struggling with the the incentive model of why people would want to store files on their decentralized network and I think use cases like Git and use cases like software updates are kind of more feasible and people can wrap their heads around oh yeah no I would use a decentralized Git server that makes sense to me if basically there's there's no single point of failure I can always access my code I would pay for that right at least I would as a developer I don't know if I would pay for storage of random files like I would with Google Drive I you know that's just kind of my my opinion but do you have an opinion on that yeah right I mean so they have interesting technology and you have really smart engineers working that I'm just not sure of the use case of what they're presenting I like the idea and I'm really glad that they're working on projects like IPFS because I think those could be fundamental pieces to help scale blockchain so we can have all of this nice file storage and and get storage and all of the stuff that we want to do but then also you know not have to store it on a blockchain and blow that entire chain or the ledger Mike did you have any thoughts on how you show proof of replication over time like say a node goes down and you've lost you know yeah so you would have to gain consensus but each time you make a transaction right and it would be difficult to manage that over time absolutely right you'd want to make sure if you paid for your repo that it stays around right so you'd want to make sure that there's extensive now I'm not proposing a white paper on this just yet right there's that whole economic model has to work and has to be kind of bulletproof before you could implement something like that that would scale and that would last the time but now there's plenty of coins like master node coins right where they essentially that's what you do is you set up a node that doesn't do proof of work but uses proof of stake and the idea is that there's more nodes because there's a block incentive and so you get to a point where you have thousands of nodes that are essentially competing for the block reward but in this case you would be competing to store your files and not necessarily like competing is that everybody that proves replication gets a block reward right and so the more nodes on the network the less the block reward goes down those kind of models would need to be worked out to make sure that you know there doesn't there's not a million nodes on the network and you know each single node doesn't get a whole lot of payout and it's not worth it to run a node anymore I mean when you build a project like that you kind of have to look at where the sweet spot is and how you could you know design a project to meet those needs yeah so that's interesting and like even like lightning network 2 is pretty interesting stuff I think I mean this is there's two camps there's on-chain solutions are the only thing that is going to work I kind of lean the other way a little bit saying I think off-chain solutions have their their merit right so Cardano Cardano is a good one the lightning network is a good one even IPFS is off-chain right I mean it's basically synchronizing between blockchains and you know another service right so I think you need to have the immutability somewhere in that root of trust right anchored which I think blockchains do really well but necessarily for the transaction speed and the scalability that we can't have it on chain right I just until somebody comes up with another technology to do it completely on chain then we're gonna have to look at these off-chain solutions so on that kid help her on that kid help her when when you're like fetching objects down are they all gonna have to live on like one node of that or well so yeah the idea would be is that I mean so currently the way it works it's living on my note here in my docker container right the idea would be that you'd have a blockchain alongside it say okay I would like to start this repo and every time you make a commit you'd have to make a transaction saying you know here's the new head please update it and then proof of replication for all the all the nodes reach consensus and say ah here you go yep it's it's all replicated so you basically get like an act back to say it's all replicated so but but when you're pulling down like would the entire transaction be between you and one server might it might get like one of the shaws from one place it's it's like tour almost or yeah like yeah I that might be kind of needed like you know a thousand people are all storing the same kinds of repos you kind of you you just do the data or something yeah I mean it would be interesting to do a study on you know how fast ipfs is compared to professional get I mean when you throw decentralization in there you're going to lose performance but I'm curious by how much and how long it would take to replicate over 10,000 nodes and and those kind of things need to be explored but I do think it's worth thinking about because I mean today I had all sorts of problems with get up now granted that doesn't happen all the time but if it's ever controlled by a single entity and there's censorship involved that's where you kind of want to look for decentralized solution so if there's developers that you know are being censored and they can't work on certain software this decentralized get server idea might be quite interesting to them and actually solve a real problem yeah so you've been talking about scaling that's the next big biggest challenge in in blockchain and so I you mentioned that ethereum don't scale very well and and the throughput is quite low actually so I've seen that project like EOS for example where throughput looks like much higher than ethereum for example but which are more centralized yes so what do you think is the right combination of parameters to solve this problem of scaling is it throughput is it decentralization is it actually to find the right balance between those parameters which could solve this this problem or what are your thoughts about it yeah no I think that's a good example because so for people that don't know about EOS there's block producers right and they're the ones that produce blocks which have rewards and then they share them with people that vote for them so basically they're they're like elected it's like a delegate system right so that speeds that can allow those kind of architectures can allow for higher transaction throughput but at the loss of you know some of the decentralized nature of like proof of work blockchains so it's an interesting cause and I personally my view is that there's a balance of it right and finding that balance is difficult because there's kind of two camps where you know I would never use EOS because it's completely centralized and the other camp saying well yeah that's true but look at what it it can enable right it can enable much higher throughput than traditional block change so I kind of follow somewhere in the middle I think we're hopefully going to find a better way to do the delegates and and voting I think there's been a lot of criticism on EOS on how how block producers were getting voted in and personally like what I've seen with master node coins are pretty interesting is that there might be a tier so there's nodes that help produce blocks and then if you have one of those then you can vote to elect certain people so it's done in a decentralized way they did it in person not through a blockchain so I'd kind of say maybe to to move to that model that did you use the blockchain to do the voting to have the delegates so Tron's an interesting one I know Tron's kind of a strange beast out there but I actually did some looking into it lately because they started their main net and they have kind of a similar idea with their block producers except they have more of them so I think that's instead of having 28 I think it is block producers for EOS having a thousand or 10,000 might be a better solution that way it dilutes the power of a single block producer and they also had problems like there was a critical software update where all block producers had to update their their nodes and run certain software and you know guys like I'm on vacation for three days sorry I can't do it and so it actually cost people money because they end up losing money based on a vulnerability that wasn't patched so those kind of things really shouldn't happen on a blockchain you shouldn't have to you know oh I'm going to manually update my software to do this so you just you get kicked out of consensus of really what should happen and your node no longer can produce blocks if that's going to happen and there's a critical network upgrade that needs to be deployed well good question what are maybe I'll ask a question to the audience so we we're all here for embedded linux and iot what platforms would you guys like to see blockchain on what use cases maybe aside from the decentralized git and over the air updates is there any other use cases that would be interesting in kind of our our realm other than value transfer right and sense of proof money s3 well yeah that's essentially what filecoin is shooting for right is a content addressable oh that's a good idea yeah yeah that would be it would be I mean it's a science project that I'm going to continue to kind of analyze but yeah those kind of things would be would be really need to be able to see if because it's decentralized like you're saying that you could actually multi-thread it and be able to pull stuff a little bit faster you know you're always going to be slower you don't figuring out what you've got to grab so you've done a lot of git right doing infrastructure forget I mean what's your experience with centralized git servers I mean is it get hard yeah yeah so is that is that where you see the bottleneck is getting it is getting the data moved yeah I never I've never tried it but I mean an object-based file system would work really well with with IPFS so that they do have some work gone going to do actual mount points you could mount an ipfs file system and so you could actually just set a git server right on top of that if you wanted to but then you still don't have a way to have other nodes in the cluster pin your data which is really I think that the important bit there that's all I had is there any other questions why do you think that a hyperlinker has joined into a medium line that's an interesting question I actually don't have an opinion on why they join I think Ethereum is looking for any way to scale that they can and they're they're looking at zk snarks right off-chain solutions they're looking at hyperledger it sounds like I think they're trying to test the water I mean they have that proof of stake update that they thought was going to help scaling that hasn't gone out yet that sat on test net for a while and so it's interesting I think that they're just trying to kind of look at all the technologies and try to figure out what's going to be the next one I don't think they've made it up their minds at all on on what it actually is and how they're going to achieve it yet so it's this space is still while it's been around for 10 years is still very immature especially on the d-app side and the scaling side so I guess in closing then I really hope to see useful applications built in the future on top of blockchain distributed ledger technology they're big problems to solve but I think with enough smart minds kind of focusing on on real use cases that we can actually achieve that but again there's no silver bullet here this isn't the technology that's going to save you or help you ship product faster it's still very experimental so thanks for your time everyone