So, what about the IoT (Internet of Things)? The lock example is a really good way of doing things, it’s a great example of how IoT can work more effectively. If Ethereum, or anyone, solves the scaling problem that applied to Ethereum, you can imagine it will be used for many IoT things.
I met a representative from Slock It at a conference last year, and he was talking about this grand vision of; “Hey, I’m in my electric car. I pull up to a set of lights where under the floor there is an induction plate, and I can push a button in my car that says ‘you should charge at any available induction plate’ and they charge a penny for any available induction plate you access. Effectively, it will pay via micro-transactions for every couple of joules of energy it got.
That’s’ very possible if the current problems we are facing with scaling are solved. Once we can figure out how the get blockchains to do hundreds of thousands of transactions per second, this can easily become reality. And it’s really awesome, right?!
Questions from the audience
How do you get smart contracts to talk to each other? On the classic net you have APIs and integrations, so can smart contracts communicate?
Yes, smart contracts can communicate with each other. Basically, you just include the source code of the other smart contract in your application or its interface, and then you can instruct it to use a specific method on a specific contract.
Would each communication cost gas then?
Yes, but it’s always the person creating the transaction who pays the gas, currently. There are things that might change that so the contracts can pay their own gas, but currently yes, if you want to interact with a contract, you pay the gas.
When is Casper coming?
I don’t know. When it is ready.
What is Casper?
Casper is Ethereum’s upgrade to proof of stake. To explain what that means, currently the way that the vast majority of blockchains work, or the way that they validate transactions and block to make sure that nobody is stealing money is via this process called proof of work. Which is essentially proving that you’ve wasted a massive amount of electricity, roughly as much as is used per annum in Ireland I’ve read. What happens in a basic sense is that you say to the rest of the people on the network ‘Hey, I’ve wasted this much electricity, and I say all these transactions are valid.’ and they more or less say that ‘We agree that you wouldn’t have wasted that much electricity for nothing, so we believe you.’
That’s essentially how it works. That’s really very wasteful, as I’m sure you can understand, which is why Ethereum wants to transition to proof of stake, which instead of using just electricity, it would use peoples deposits. So you would put in say 1,000 Ether and you’d lock it up in a smart contract, and you would say ‘Hey, I’m willing to validate blocks.’ at which point the Ethereum network would call upon you yo validate blocks every once in a while, and you would say ‘I think that these transactions can go in this block, and all is good.’
Now, you’re not the only one doing this work at this time, so if you’re found to be wrong, the network will confirm with others at the same time if they agree with your result. If the other results from the network say that you’re ‘lying’ your deposit will be deleted, and you lose all your money. So, it’s a very good way of making sure that people who are stakeholders in your system are being truthful.
That’s the idea behind proof of stake. You would use nowhere near as much electricity, you could reduce latency times because you don’t have to do a bunch of mining, which could effectively increase throughput as well.
So, what are the benefits? Is it just the fees that these stakeholders would be taking?
Yes, there would be fees. The fees are roughly from 2% to 3% that people currently are estimated to be claiming on staking each year.
Can you run a VM on the Ethereum virtual machine to give you access to your whole operating system? For example, say I wanted to run a whole, bunch of DApps on the Ethereum network, would that be possible, or would I have to write all of my smart contracts using Solidity or Vyper?
Yes, I’ve been playing with Solidity, it’s really straightforward, but the question was more coming from the perspective that there’s already this infrastructure that we’ve all created on the centralised web, would be some way to pul it over to leverage some of that instead of having to build everything from the ground up?
You can absolutely leverage it through things like Oracles if you are using external APIs and passing that data back on to the blockchain. The question I have is ‘Why would you want to?’ The reason why so many people like this transition to a decentralized web, almost a web 3.0 is that we are taking out all of the middlemen which give us all of these services. People are kind of saying ‘We don’t want that anymore.’ and they want to build their own systems, which is why more people want to know the answer behind ‘What is Ethereum?’.
I guess the followup from that is that the reason you would want that is for reliability, so if availability was distributed, and I don’t know how much availability can be guaranteed, or even transaction performance, for something that is business critical and you want to perform transactions for one element, you might want to communicate externally or leverage some of the existing infrastructures you choose, like production systems.
Yes, you’re absolutely right, I would say that Ethereum is not ready to be used in production systems. It’s just not scalable enough. If you want to put through 1,000 transactions a day as a business on Ethereum that could be iffy. 1,000 transactions a second, just not possible at this stage.
To achieve this you’re going to need a private chain, your own which has been forked from Ethereum. Parity’s proof of authority consensus algorithm is really good at that. People have built very high-performance blockchains just using that algorithm. The Ethereum Virtual Machine is incredibly powerful, the Ethereum public network is not so powerful.
Can you talk more about security, tell us about the difference between traditional transactions and Ethereum, why is it more secure?
Ethereum, the protocol itself, and the network has proven itself to be roughly half as secure as Bitcoin if you take its market cap as a measure of its security. There is an incentive to hack the protocol of Ethereum, and that is the however many billions of dollars are stored on it. The smart contract layer and the programs that run on top of Ethereum are a completely different kettle of fish. Because you are providing an interface for people to interact with the Ethereum blockchain, you are also providing an attack surface for them to maliciously modify the state.
The contracts themselves are the things which need to be audited, they are the things that need to be looked at and heavily scrutinized as to the level of security. You’re probably aware of some of the more famous hacks that have happened on Ethereum. They are purely exploits to smart contracts. The protocol itself has not been exploited. It’s purely smart contracts that have either been poorly written, or just not audited correctly, or not setup correctly that have been exploited.
From an Investor’s perspective, what potential do you see Ethereum having in the future?
I’m not here to give investment advice. I don’t want to speculate on how valuable it is, or how valuable it should be, sorry.
Are smart contracts reliable? Is there a dispute resolution process?
Basically, smart contracts are as reliable as you code them to be. If you program really good A+ computer code, then it’s reliable. You can get around dispute resolution by having something like multisig, where if you are doing a transaction between two parties, you just specify a third party who is trusted.
But you don’t necessarily need them to complete a transaction with a third party because if the two parties who are in the transaction agree, they can just complete it themselves. You can have optional dispute resolution, as much as you can with PayPal, eBay, just as long as you know who that third part is. The dispute resolution mechanism is the Byzantine Fault Tolerant algorithm that is proof of work.
How do you implement something like continuous delivery or updates to your product in a way that all the users of your DApp are using the same version of the API?
By using a proxy, like a business logic contract, and on the front of that you have a front facing contract, where a user interacts with the front facing contract which uses whichever backend contract the Admin specifies.
So is the back end contract centralized in that case?
Presumably, if you are doing continuous integration you would want it to be.
So you described Ethereum as a computer, did you mean that in a hardware context or a networking context?
It’s a virtual machine to be more specific. Ethereum is a piece of software, running on a bunch of other peoples computers, and it runs a virtual machine that processes bytecode in the same way on everyone’s machine.
One virtual machine distributed across multiple hardware?
And the communication between one virtual machine and another virtual machine?
It’s TCPIP, a network layer.