One of the biggest benefits of blockchain that a lot of people are talking about constantly is the fact that it allows us to decentralize things that were previously just centralized in every single way. But I'm curious to hear how you guys describe the differences between centralization and decentralization and what are the pros and cons, what's important when you're decentralizing a software based system? I think what's so great about decentralized systems it's in the word, it's decentralized. There's no central point of failure. So if I go and host my app on Amazon Web Services and they say, "You know what Elliott, we don't like your app. You're delisted because we don't agree with some part of it." They have the right to do that because it's a centralized system but with Ethereum it's essentially running a distributed hosting platform for applications. So now no one person can just say, "Oh, you know what, I don't like what you're doing. Sorry you can't participate in this network." Now, because it's distributed, everyone gets to participate and there's no discrimination. Well, yeah. I think what we mentioned right from the start was more of a open source technology. We didn't mention the private blockchains and the reason for them to be out there and existing. Probably, it's again coming because the industry is very young and the enterprise still has specific needs that are not satisfied by the centralized. Probably, right now, the most concerning one is related to privacy and security. So that's why you would have Hyperledger and other things like that, which basically is a technology you can host it somewhat privately and use it or recently a couple of big-name companies they announced their own blockchains, they're going to support it. Even if you take the same Ethereum, Amazon is supporting running in AWS calls privately Ethereum network. It means it doesn't have to be public. So decentralization is one concept. Running it privately is a little bit differently. It can still be decentralized because they'll be running on AWS or any other Cloud provider in a decentralized way. They'll be talking to each other agreeing on consensus and so on. The whole difference is just to not be public, which means that it will be hosting some specialized solutions for that. The only thing that the concept of the blockchain provides is this distributed database for traceability. Where you have the transactions and then you read them and do whatever. In case of Ethereum, you also have a place where we can store business logic called Smart Contacts, but it's just a more fancy name for writing business logic for your business. Yes, it doesn't satisfy still the full-scale of questions for the enterprises like making a basic HTTP request, which is cutting out a lot of use cases for the businesses and there are a lot more but still it's a way to do it on a distributed ledger. You have the possibility to execute code. So decentralized, centralized at the same time, so that's like one, they're different. The centralized, for example, can be Google, Amazon, Azure, and OpenShift or any other Cloud providers. Then you have the decentralized, which is the Ethereum. So we talk about the concept centralized and decentralized. Then there is still decentralized but private and which is can be the same open source technology running private Clouds, where you will not probably care much because if it's running in a private usual network, then you would not care so much about consensus being one. We would care about attacks because it's a controlled environment. So it's still decentralized but private. At the same time, it's becoming centralized because its running in one place. Nobody has access to it except one specific entity. So all these concepts they're really shifting into each other, depends how you look and what problem you're solving. It also depends, when you're talking about enterprise solutions versus completely public solutions like [inaudible] network. Yes. They have different requirements for, basically, attack factors, the different potential vulnerabilities that their network might have. Yeah. Right. Yes. So exactly for that reason there are other chain or technology provider for the next generation of blockchains, like Dispatch US and others. Who will allow a hybrid between what the private blockchain controlled environment will be running and the public technology stack to be run publicly and it will provide services from both sides. It'll be secure and encrypted at the same time it will be decentralized. So it's not actually centralized, running in a private data center, run publicly by everyone. Just you can keep different types of data and allow access based on encryption and all sorts of mechanisms for security, authorization, authentication and all that stuff. So this is something that doesn't exist yet, but it will be something normal in the next year or two. Well, there's not only the concept of centralized, decentralized, also will address questions about scalability and speed of transactions because right now it's understandable why but it's still ridiculous to have 10 minutes for a transaction or two minutes for a transaction. I'm talking about Bitcoin and Ethereum. What's so great is that when we have a private version of Ethereum running. Yeah. We can go change block times. So now that's the benefit of centralizing. Yes. One these changes, you can go run it a lot faster and free. Yes. Well, yes, because the economy has changed that means the farmers are no more needed because you pay for the service yourself. The incentive on the public network is that someone has to pay for electricity or things, or hardware, so you pay the gas. If you run them privately, then you have to have some knobs to turn off all the gas consumption costs and so on because you know you're going to pay for it anyway. Yeah. So I think that there are custom solutions that allow me to do that, which you would have, I know this place that does this and which puts your parameters and where you configure if a network will consume gas or not. So it's up to you to define the policies. So if you take Ethereum and place it into a private network and still the transactions will be functioning based on the gas consumption because that's baked very deep into the kind of the code, but once you make the system more flexible and take the configuration out of the implementation. Then it's easy to say. I'm not waiting for consensus to be two-thirds because I know everyone is honest. It's my environment. So I need, probably, just one delegate to get to take the decision for me. So this way you speed up a lot of the transaction execution. So I'm just giving an example, not saying this is happening but you could be doing that by tweaking certain components. As a possibility. Yeah. So I know trust is a huge focus when we're talking about blockchain decentralized networks. How do you really ensure that you have trust or that you know that the different transactions and happenings within a network are actually legitimate? So I think the best way to verify and have trust in the network is to understand the system. So crypto-currencies currently they are trustless. So they don't require you to really trust anyone because when you go and run a node on your computer, you go and communicate with other people on the network. So at some point you technically do have to trust that those other nodes are honest and they're giving you valid blocks but that's an assumption we have to make. Then you go down on the blockchain and you can go verify the balance of your account by going back and seeing all the spent money and tracking that spent money forward to your address. So it's great as you don't have to just rely on VISA to say I have $500 in my account. You can go back and look through, essentially, what would be VISA's database, if you want to look at it like that and go and see where all the transactions came from that led to that $500 balance in your account. In the case of a public blockchain, you can see all of the other addresses that are participating in that blockchain. So that's one of the issues I would say with some public blockchain is that all the data is visible. So with Bitcoin people say, "It's anonymous," but that's not really true because if you bought Bitcoin on Coinbase then whatever you did from there with your Bitcoin is actually traceable. So there's a lot of people who say, "It's shady and it's just used for all these drugs." Well, if you're buying Bitcoin through Coinbase and then using it to buy drugs, you're not very educated on Bitcoin. Even moving further with different blockchains, I'm sure you can talk about it. Thinking about different consensus algorithms and there's different ways to establish how all of the nodes agree or whatever their method of. Yeah. It's the same question that was a little trustless but you still have to trust in a way. You can't be just in the dark and be paranoid that everyone is doing something. You have to talk to someone. Exactly. So this is where the consensus is coming in. This is like. The problem of Byzantine generals getting solved. Can you explain that the Byzantine generals problem again? Yeah. So it's actually really simple. If you think the table is split in two and here is un-crossable possible territory but somewhere on the other side. So you have half of your army on this side, and half of your army on this side. That's the classical example and somewhere on the far side is the enemy. Now, they can't talk to each other because they are no phones, no nothing. They're on horses. But if these guys go ahead and attack, they're getting crushed by the enemy. If this guy is attacked independently, they're getting crushed by the enemy. So the trick is to attack simultaneously the enemy. So this is one you are going to win. But how do you ensure that they are going to synchronously attack at the same time? How do you tell that these guys are going to [inaudible]. The problem is how to make sure that they know that they have to go at the same time and trust that the other guy's going to do it too. So that's the problem. How to solve it? Classical way. Probably these guys are going to send someone on the other end somehow together. At the same time, he might be getting [inaudible] and maybe these guys are going to send someone on the other side. The messengers. Yeah. Messengers. What if one of the messengers gets to the point and the other does not and so on? So pretty much if you translate this model into computer science is when a computer gets a message or some signal that someone else has a transaction and this is the amount, so we have one computer says, "I have five dollars," and we have another computer saying to this one, "I have also five dollars," or "I have zero," and computer one is going to send five dollars to two and five dollars to computer number three. But he has only five, so he cannot send two times five because once you send five, the five is gone. The same time once the five is getting sent, how do you make sure that he will not fake that he has five dollars and send. So it has to be talked in between them, verified that nobody's telling lies. This is like the weak point where in the crypto world you here or you can read all these articles about attacks and people getting fought because something got broken and they tried to fix it by converting the state and so on. So it's not a simple solution, but what I'm highlighting is just the problems that are being attempted to be solved and there are many approaches to solve. That's why you have so many blockchains being built. In themselves, the technology like why so many blockchain or so many technologies around that? Because they would solve different problems but at the same time, one fundamental problem they all have to solve is related to the consensus, being able to agree that the specific information is valid for everyone and everyone accept it as truth in time. So that will be used as a building block for the next message getting that because the next one will be based on the previous state. So if you had a $100 here, then this got spent, then you will have 99, then 98, and so on. So if the previous block is not valid, you cannot spend more because it's not what happens. So you have to check. You can't prove it across everything. Every time you go in circles and ask everyone, do you agree that this is the value? Once everyone says yes, yes, yes, not even has to say, at least two-thirds. That's the community- Rule of thumb. Yeah. Well, you can define your own, how much you want. Again, if it's a controlled, isolated environment then it can be zero. Or whatever. Yeah. If it's on the public, then usually the [inaudible] all to make sure the majority says yes in case someone gets disconnected or networking problems. So once the majority says yes then this is getting adopted. Then the next message is based on that and the next one on that and so on. So in that the Byzantine general example and you apply that obviously to blockchain, how would you verify that the message, like the messenger, that this army has sent to this one? How would you verify that this army basically owned or the messenger came from this army? How would you verify that? So that would be with the signatures. So Bitcoin has a few different layers of the tech. One is the networking layer where you're talking to your peers. Then another layer is the cryptography digital signature layer. So essentially when you send someone money, you sign a digital signature that says, "Now Nikolai owns this Bitcoin." So only the person who has that key can sign that message. Which means in other words only the real general can say, "I'm the general," and authorize a message to be sent. Unless someone has gotten his digital signature which is the whole reason that we say, "Protect your keys.". Yes. Well, yes. That also involves that you know how to identify someone's signature. Also true. So when you translate this concept into mathematics, you have the private-public key thing. But in the simple world, imagine that you will sign with your finger. Anyone can sign with a finger. How do we know if it's his or not? So basically on the other side of the river, you would have someone who knows how that finger looks like for his other general friend and when a messenger comes in and says, "Here is the sign we're going to attack," he says, "Oh, yeah. I recognize the finger because I know he had a special sign. So he knows it's him, so basically he would identify that, yes, it's the only one person who can sign. It was actually him, not somebody else, not someone faked it. So that's how you could fake a transaction. You could send a messenger and the messenger actually gets swapped during the process and someone else goes there and say, "They're not going to attack. Don't do anything." So the whole transaction fails. In cartography, you do with the public-private. So basically you sign with your private key, but the other receiving one should know your public address. So this way from the signature, he'll be able to do that with the public and then check, yeah, this is the public from the signature, this is the public I know about. Do they match? Yes. Okay. So it's original, means whoever sent is actually him. Yeah. So the basis of this entire thing of solving the double-spend problem and the Byzantine generals problem is it comes down to cryptography, right? Essentially. At the end of the day. Then also trusting that your peers are going to be honest or that most of them will be honest. At least 51 percent. Exactly. So if 51 percent of them are honest, then dishonest actors, their actions essentially are nullified. But then if you have people who are 51 percent of the network is dishonest, what happens is now the network is insecure because you can have double spends. You can have all sorts of problems. As soon as people realize that that's the case, that the network is compromised, then the trust in the system falls apart in general. Then your currency is worthless, which is great because then it's an incentive to be honest. There it is. Because if you're dishonest, you lose your money.