**A** (0:02):
So up next we have Sunny Agarwal. Sunny is a research scientist at Cosmos. Here he is coming in. Look at that walk. Dancing queen. He's going to talk about building a plasma MVP chain with the Cosmos SDK.
**B** (0:21):
All right. Hey everyone. So I was originally going to talk about building a plasma chain using Cosmos SDK based off some of the work that some of my friends at a project called Fourth State are doing. But I realized I could not do that in 20 minutes. I tried my best and I couldn't make it work. So instead I'm going to be talking a little bit more generally about pitching this idea of the interchain and then just some of the general tools that my team has been working on in order to make this vision of an interchange reality and then how, you know, where Ethereum fits into this interchain vision. So I'll go ahead and start off before we go into anything about blockchains, just a quick, you know, some of you may have heard me do this pitch multiple times by now, but like, you know how I see the development of human history where we started off with these things like villages and kingdoms and they weren't able to like scale very large. Mostly, you know, I think historically economic growth comes from economic connectivity. But the problem is, you know, for the longest time you could only trade with your like close by neighbors and whatnot. Until, you know, empires came along and this. And humans have been building these empire things for like thousands of years where we basically through mass political integration we were able to achieve mass economic integration. But you know, at the same time, empires come with their own host of problems. You know, they tax their citizens heavily, they have a lot of governance issues. You know, I just don't think they're very socially scalable. And so I think the greatest innovation of humanity in the last hundred years was we learned how to do large scale economic integration without necessarily large scale political integration. And so this is what we have today, this world of nation states and city states. And there are a couple of technologies that made this feasible. One was free trade zones, things like containerization. So you go to any shipping ship in the world or any port, they're all designed to deal with this same container format, same dimensions, everything. And so this allows any port in the world to ship to any other port in the world. You have institutions like the UN that are not a government, but they're like a discussion forum for people to debate and whatnot. The Internet, obviously I probably don't have.
**A** (2:48):
To make that pitch.
**B** (2:50):
And so I would Say that I see the evolution of blockchain development in a very similar light progress where first we had these generation one chains where you had highly specialized chains with each with their own specialized use cases like Bitcoin for payments, Namecoin for DNS, SIA for storage. But there was very little connectivity between these. You couldn't use your BTC to buy a DNS name, a namecoin bit name. You couldn't use your bit name to point to a SIA address storage hash for example. Where Ethereum came along was and built the first blockchain empire where they basically said look, by building everything onto this one chain you could have this like, you know, mass connectivity between your applications which is really nice. And so you know, you get this nice composability of different applications in Ethereum. And you know you can use your sell Your CryptoKitty on 0x for some make or die, right? Like that's pretty cool. But you know, at the same time I think Ethereum also does come with some of its drawbacks where you know, one, there's a technical scalability issue here. When you come to these empire like chains where like one chain that has many dapps on it. I think you also hit like social scalability issues. We see this today with like a lot of the governance issues and even on the technical roadmap there's like hundreds of open EIPs, many of which are like sometimes even contradictory with each other. And so you know, trying to like, you know, the larger a system is, it's just becomes harder and harder to take into the account the will of all the different stakeholders. And you know, so what we propose is this idea called the interchain where we want a number of specialized blockchains, each with application specific, but still have some level of connectivity between them where they can send tokens or data or assets or things between them. And so you know, and I think Ethereum is going towards this right now as well. Like we see the proliferation of these ideas like you know, sidechains to Ethereum. Even ETH 2.0 is a version of this as well where you're splitting out into multiple shards or chains or even like plasma is a different model of this. Like all these ideas of using side chains maybe with different security models but, but at the end of the day in my opinion they're all just side chains with interesting security models. But what we propose is instead of having one system where there's a singular hub, we prefer systems in which it's not even a single Hub you'll have multi hub systems where the relationship between different chains can be like some chains might have basic sidechain like security, some chains might have plasma like security, some chains might have more shared security, like pooled security kind of systems. And so you know there's, and I think there's going to be like you know, many different hubs in this interchain ecosystem. There's like, you know we built one, just launched it recently called the Cosmos Hub but you know it has different trade offs than Polkadot's relay chain does, which has different trade offs than Ethereum's like beacon chain will. And so I think like all of these different type of hub chains should coexist and basically have these different trade offs and allow the interchange to explore the full trade off space and like the full space of different things you can designs you can do here. And so to make this interchange work though, the company I work for at Tendermint we've built a couple of a bunch of tools actually to make this a reality and make this help us move towards this interchange world faster. But I'm going to go over a few of them, mainly these middle three. So the first one is our inter blockchain communication. And so what inter blockchain communication is, is essentially, it's a way of just really this is all complex text in order to just say it's basically doing sidechains, right? Sidechains is a very old idea. Blockstream proposed it like over five years ago now. And the idea is you can have an on chain light client for another chain and you have it two way and you know this has been, you know people have built this many times. Like you know the earliest one on Ethereum I remember was BTC Relay where it had a btc, right, A Bitcoin light client on the Ethereum machine. And so really what Cosmos IBC is really trying to do is we're trying to say let's try to make sure we can generalize this because when you talk, you know, when you do this like two way sidechain system there's a bunch of things you have to figure out. One is like, you know, you have to know how do you understand the header of the other blockchain, what is its consensus protocol, how do you understand the like client headers there? Then you know, you don't know what kind of accumulator the other blockchain is using. Maybe it's using a Merkle tree, maybe it's using an RSA accumulator. If it's using a Merkle tree. What kind of hashing algorithm is it using? So these are all things you have to figure out. Then also the packet format, like, you know, somewhere in the state of the other blockchain is some packet, but what does that packet look like? And so these are all things that need to be specified. And to do this we've created this repo called the ICS Repo Interchange standards. And these will kind of develop similar to how ERCs will develop, where they'll kind of be these standards where the community will kind of settle upon them. And so There'll be different ERCs, token transfers, non fungible, sorry, different ICSs, non fungible assets, data, you know, different types of things. And so really what we've been focusing on is the purpose, what makes IBC special is we're trying to make it this like very generic thing that's highly abstracted. And we have a working group with like multiple teams, you know, Tendermint, Agoric, even Prismatic Labs, who's one of the ETH 2.0 client implementers. So really trying to make sure this thing, this protocol is abstracted by well enough such that it could be adopted in many different chains. And we're willing to work with anyone to join this IBC working group in order to make sure we don't overfit IBC to any one consensus protocol or one framework or whatnot we even have, I think Ripple is even interested in joining. And so we're open to letting anyone join this IBC working group because we really want to create a properly abstracted a protocol here, some more information, you can learn more about ibc. Okay, so the next thing that we have is the Cosmos SDK where so Ethereum, like I said, Ethereum did two things really. One was the whole interoperability and composability of applications. The other thing it did was it just made it way simpler to write applications. So you know, in generation one, if you wanted to write a blockchain for really your only way of doing it was to fork the Bitcoin code base and kind of like modify it. And that's why all the early things were pretty similar to Bitcoin or like they were badly designed. Like, you know, Namecoin should not have been designed as a UTXO system, but it was just because it was a fork of Bitcoin. And Ethereum came along and allowed it to be simpler with like solidity and stuff. And there's been a lot of development happening in solidity ecosystem to make the Development process simpler. But what we're proposing is this idea of, we really believe in this idea of application specific blockchains where I love smart contracting systems but I think they should be used for exactly what they sound like, which is smart contracts. If you're writing a short term, one time use thing then you should be using smart contracts for that. But if you're building large scale long term applications have like a high level of complexity, you know, we're building Dexes or prediction markets or you know, any large scale thing, I really think it should be on its own specialized state machine, not running on this like true and complete vm. And you know, there's lots of reasons for this but you know, so some of the cool things with the Cosmos SDK, you know, it's written in Go so you can use all of the tooling and IDEs and everything that's been built around the Golang ecosystem, which is really nice. And it's this modular system has a bunch of cool modules you can pull and like as you develop modules for your application, you can upstream them so other people can like use the same modules. You know, we have some cool modules called like one of ours is staking, you know, we have this thing called Bonded proof of stake. Really cool staking design. But I don't have time to go into it today. You can if you want I can shoot you some links afterwards with more details. So one of the cool modules that we built was an EVM module. So one of the things that we wanted to do was to test that to make sure that the Cosmos SDK is a properly abstracted framework. We wanted to see can we write an Ethereum client in the Cosmos SDK framework. And so that's kind of what our model here is with the EVM module. And, and so we started to do that. We have modules that allow it to be completely Web3 compatible if you wanted to. And so the idea is you can kind. We've been working with Alexei from Turbo Geth to bring in some of his ideas onto this. But the idea here is that you can write your own. Many people have already started writing applications in solidity and they've already poured a lot of resources into this framework, into the EVM framework. And so what's nice is you can import this EVM module into your own chain that's sovereign. But then slowly over time maybe you can port some of it out of the EVM and into more native functionality as standalone SDK modules. There's a lot of people already using the Cosmos SDK to build stuff. One that I particularly like to highlight is 4th State Labs. A couple of my friends at Blockchain at Berkeley, they've used the Cosmos SDK to build a plasma sidechain plasma MVP implementation that connects to mainnet Ethereum and they have a cool working implementation that you can go run today if you wanted to. So at that repo and then there's a tutorial video where they kind of like walk through the entire process of using the SDK to build their Plasma MVP chain. And I don't think the Cosmos SDK is the only framework. It's just one of many frameworks and I just think that the SDK it's written in Go. I think it provides this nice middle ground between security and ease of developer access. But we highly encourage people to use the framework that makes the most sense for their use cases. Learn more Finally, Tendermint so don't want to go too much into the details of Tendermint, but it it's a BFT consensus protocol. A lot of the Casper research has originated out of some of the Tendermint BFT work that's been done and I think Casper is a really cool consensus protocol. But the fact of the matter is Tendermint Core is a consensus engine that exists today and it's probably the first production ready production grade BFD consensus engine. We've run it with hundreds of validators, 250 validators over the global Internet across five different continents with sub 5 second block times. So if you want a proper BFD consensus engine today, Tendermint Core exists for you to go use. And so the nice thing is you can write your state machine on top of Tendermint Core in basically any language you want. We've had people write it in all of these different languages and some of the projects that happen to be using Tendermint Core today. So for example, Loom is using Tendermint Core for their sidechains to Ethereum and they're not really using the Cosmos SDK. They built their own SDK called Loom SDK. But they're still able to use this production grade BFT engine to power their consensus. A lot of other projects like Oasis, hyperledger Burrow is an implementation of an EVM running directly on Tendermint Consensus. So you know, it's an existent BFT evm, which is kind of cool. Yeah. So there you can learn more about Tendermint BFT and some more about Tendermint Core. I'll post all these slides in like the telegram group or something afterwards so you can get all these links and. Yeah, so that's about it. Come build the interchange with us. Let's tear down empires and build more sovereign and free more sovereign and free world as well as a more sovereign and free blockchain ecosystem. Thank you.