Presentation: Architecting the Blockchain for Failure

Track: Architecting for Failure

Location: Fleming, 3rd flr.

Duration: 11:50am - 12:40pm

Day of week: Wednesday

Level: Intermediate

Share this on:

What You’ll Learn

  1. Hear what Ethereum does
  2. Listen to how we prevent different types of failure in Ethereum
  3. Find out about some of the underlying consensus mechanisms used in Ethereum

Abstract

In this talk I’ll be discussing some of the different approaches taken in the Ethereum blockchain for handling failure.
 
We’ll cover the public Ethereum blockchain and the steps taken to ensure a robust execution environment for this massively decentralised computer.
 
We’ll also talk about some of the challenges faced in private consortium network deployments and how the technology had been adapted to service different business needs.

Question: 

So what's the big goal for the talk?

Answer: 

It's to get people interested in this technology. It's not a blank slate, but blockchain is a young technology. There's constant innovation in the space - with numerous groundbreaking technical papers being published and applications being developed. It’s so new that the he good books haven't been published. We’re in a fascinating, disruptive period in blockchain technology, which means there’s plenty of opportunity for technologists.

Typically when you want to contribute to a significant technology, it can be challenging to find the right place to start - so many people have already created the core frameworks, and useful tooling. Hence people end up often end up improving/reinventing the wheel - creating a new version of a framework that offers improvements, but often isn’t fundamentally different to what was there before. It’s different with blockchain technology, there’s so many new opportunities available to contribute to right now!

I think that's the biggest goal, to get people excited about this because there are so many different areas that it encompasses on and I feel that it's quite unique to have something that builds on academic theory but then is having such an impact in the real world.

Question: 

What is the state of the frameworks? Are they at a high enough level of abstraction where developers don't have to understand the computer science underneath?

Answer: 

It’s getting there. This was why my library, web3j, was written. When I first started digging around with the technology, I thought, OK, as a Java developer how do I work with this? And there was a big disconnect, there was no straightforward means for Java developer to integrate with the main blockchain technology - Ethereum. This surprised me, as Java is so widely used in financial firms, and given all the hype around blockchain applications in finance, it seemed like a no-brainer to try and connect the two together. That resulted in the creation of my library web3j, the Java library for integrating with Ethereum.

Back when I first started working with Ethereum, if you wanted to deploy, invoke a method on, or read a value from a smart contract (a piece of code running on the decentralised Ethereum network), there was nothing there for Java developers to do that easily. They'd have to write and encode the request and associated parameters it into an Ethereum specific format and submit it within a JSON-RPC message, which was a lot more work than you’d think. This was why I built web3j, so developers didn’t have to go through this process.

And for similar reasons there are equivalent frameworks for JavaScript (web3.js & Truffle), C# (Nethereum) and Golang (Perigold). The most established being for JavaScript due to the sheer popularity of the language.

From my own perspective I feel that web3j is relatively mature. But then you still need to write a smart contract using Solidity, which is an Ethereum specific programming language (once written, you can deploy and interact with it from your favourite language). And there are all sorts of potential bugs that you need to be mindful of. The tooling is slowly coming together. There are IntelliJ, Eclipse, and Visual Studio plugins. For Solidity there is a debugger available too but there's nothing to say that a new language won't come along and blow it all out of the water. It is still evolving.

Then of course there’s consensus mechanisms used by the network. The Ethereum network is a massively distributed system, and having consensus at this scale certainly brings its fair share of challenges.

People in the world of formal programming languages, are also very into this space, and language designers - there are all these different levels of interest!

Question: 

What will somebody who comes to your talk leave with?

Answer: 

They'll leave with knowledge of some of the key features of Ethereum that provide resilience against different types of failure in the network. This includes covering the consensus mechanisms used by the network in different environments.

Question: 

Are you going to be talking about theories and challenges, are you going to dive into implementation?

Answer: 

I'll talk more about the challenges, and how they’ve been overcome. I don't want to get too theoretical because given that you've got 40 minutes to talk, going deep into how multiple consensus approaches work will be challenging in such a short space of time.

Question: 

The focus is about consensus algorithms that are used in the Ethereum blockchain. Is that accurate?

Answer: 

Yes. The track is about architecting for failure, and I want to discuss key features used in Ethereum to protect against it, of which consensus is a significant part.

Speaker: Conor Svensson

Founder of blk.io, author of web3j

Conor is the author of web3j, the Java library for working with the Ethereum blockchain.
He's the founder of blk.io who provide the foundations for organisations to build on, and work with blockchain technology.
He also very involved in the Enterprise Ethereum Alliance, where he’s helping drive Ethereum adoption in the enterprise.

Find Conor Svensson at

Last Year's Tracks

Monday, 5 March

Tuesday, 6 March

Wednesday, 7 March