Presentation: Architecting the Blockchain for Failure
Share this on:
What You’ll Learn
- Hear what Ethereum does
- Listen to how we prevent different types of failure in Ethereum
- 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.
So what's the big goal for the talk?
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.
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?
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!
What will somebody who comes to your talk leave with?
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.
Are you going to be talking about theories and challenges, are you going to dive into implementation?
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.
The focus is about consensus algorithms that are used in the Ethereum blockchain. Is that accurate?
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.
Last Year's Tracks
Monday, 5 March
-
Leading Edge Backend Languages
Code the future! How cutting-edge programming languages and their more-established forerunners can help solve today and tomorrow’s server-side technical problems.
-
Security: Red XOR Blue Team
Security from the defender's AND the attacker's point of view
-
Microservices/ Serverless: Patterns and Practices
Stories of success and failure building modern service and function-based applications, including event sourcing, reactive, decomposition, & more.
-
Stream Processing in the Modern Age
Compelling applications of stream processing & recent advances in the field
-
DevEx: The Next Evolution of DevOps
Removing friction from the developer experience.
-
Modern CS in the Real World
Applied trends in Computer Science that are likely to affect Software Engineers today.
-
Speaker AMAs (Ask Me Anything)
Tuesday, 6 March
-
Next Gen Banking: It’s not all Blockchains and ICOs
Great technologies like Blockchain, smartphones and biometrics must not be limited to just faster banking, but better banking.
-
Observability: Logging, Alerting and Tracing
Observability in modern large distributed computer systems
-
Building Great Engineering Cultures & Organizations
Stories of cultural change in organizations
-
Architectures You've Always Wondered About
Topics like next-gen architecture mixed with applied use cases found in today's large-scale systems, self-driving cars, network routing, scale, robotics, cloud deployments, and more.
-
The Practice & Frontiers of AI
Learn about machine learning in practice and on the horizon
-
JavaScript and Beyond: The Future of the Frontend
Exploring the great frontend frameworks that make JavaScript so popular and theg JavaScript-based languages revolutionising frontend development.
-
Speaker AMAs (Ask Me Anything)
Wednesday, 7 March
-
Distributed Stateful Systems
Architecting and leveraging NoSQL revisitied
-
Operating Systems: LinuxKit, Unikernels, & Beyond
Applied, practical, & real-world deep-dive into industry adoption of OS, containers and virtualisation, including Linux on Windows, LinuxKit, and Unikernels
-
Architecting for Failure
If you're not architecting for failure you're heading for failure
-
Evolving Java and the JVM: Mobile, Micro and Modular
Although the Java language is holding strong as a developer favourite, new languages and paradigms are being embraced on JVM.
-
Tech Ethics in Action
Learning from the experiences of real-world companies driving technology decisions from ethics as much as technology.
-
Bare Knuckle Performance
Killing latency and getting the most out of your hardware
-
Speaker AMAs (Ask Me Anything)