AWS AMER Summit May 2021 | Building blockchain applications with Ethereum and Hyperledger
Hi, my name is Carl Youngblood. I'm a Senior Solutions Architect specializing in blockchain at AWS. And I'm excited to talk to you today about building your blockchain application with Ethereum and Hyperledger.
First, I'd like to talk about some common use cases for blockchain, and also some important basic concepts in blockchain. Then I'm going to get into our Amazon Managed Blockchain service, and some details around private and public blockchains and what the differences are. I'll get into some reference architectures that will demonstrate how to use our Managed Blockchain service on Ethereum and Hyperledger Fabric. And then I'll get into some customer stories.
So, let's begin. Blockchain technology is well suited for complex workflows that span multiple organizations, what we sometimes call multi-party businesses. In these cases, the organizations often need to collaborate with each other. But none of them can totally rely on a specific member of the group to manage the shared system of record, either because they don't want to have them to have a competitive advantage, or maybe they just don't want any dependencies that they lack control over. And before blockchains, many businesses were kind of stuck in this situation and reduced to the lowest common denominator of passing paper around, because any more elaborate system would still be hampered by these same limitations.
Sometimes some of these businesses have relied on central solutions like, centralized third parties or Escrow Systems. And in other cases, they simply haven't really had a solution. It's been more of kind of organized chaos where no single organization has full oversight into the state of the data. Among the customer use cases that we've often seen are various forms of financial settlement. This is kind of the starting use case that got blockchain off the ground, with being able to transfer value between various parties across borders, and more elaborate financial settlement solutions have also emerged since then.
We've also seen a lot of interesting use cases around provenance and track-and-trace or sometimes called data genealogy, where various parties want to kind of track a product or some kind of data, as it travels all the way through systems that involve several organizations. Another interesting use case is around identity and portable, verifiable credentials. Which makes it possible for individuals and organizations to use identity more in the way that it works in the real world, where they can choose whom they wish to disclose their credential to, and how much information they wish to share. We've also seen some really interesting use cases around digital ownership of both physical and digital assets, as well as fractional ownership of these assets.
Also closely related to this use case is digital rights management; things like creative works, and tracking the use of those creative works and making sure that the royalties get paid to the correct parties. So, now let's look at, if we can, just some basic concepts in blockchain that I think will help to frame our discussion and understand the services that we provide. Blockchain builds trust in a network and eliminates the need for a central authority. It has three main components.
First, the distributed and immutable ledger. Next, we have a consensus mechanism and finally smart contracts. Together these components enable multi-party transactions without a centralized authority. So, many people think of this first use case or the first basic concept, which is a distributed ledger. This is a database that stores the current state and the historical states of all the values of the data. And every change to the ledger is stored in a journal and is cryptographically verifiable so that you can see and make sure that in between one change and the next no surreptitious data has been inserted.
Another important aspect of this ledger is that it's distributed. It's copied on all the nodes in the network so that if any one node loses its data, it's not the end of the world, the other nodes can replicate that data to that node. So this duplication of data is actually by design and it helps to increase the robustness and failover support of the network.
Another important aspect of a blockchain network, one that's often not considered quite as much when people are thinking of this first feature we mentioned, which is the immutable ledger is also the fact that blockchains enable consensus across the various parties in the network. So they allow you to determine what constitutes a valid transaction, and how robust this network is against malicious actors. Different protocols have support for different types of consensus algorithms.
You may have heard of things like proof of work, or proof of stake, sometimes you hear about proof of authority. And different algorithms are needed for different types of networks, such as private versus public blockchains. With private blockchains, you already have a greater degree of trust between the participating parties.
So you may not need quite as much protection against malicious attacks, which could enable you to support higher transaction rates. Another thing that the consensus mechanism influences is the energy consumption of a network. So there's various choices and tradeoffs with the consensus mechanism. And one important aspect is what we call “smart contracts." This is actual business logic that resides on the various nodes in the network that allows you to perform computation at the edge of the network, so that every party involved can choose to veto a transaction, or approve a transaction depending on whether it follows the appropriate business logic.
Otherwise, you're relying on some central authority to approve that computation and that could be potentially a single point of failure or weakness in the network. So, blockchain tries to duplicate this effort across all the nodes in the network and allow each of them to have a say, in which transactions are approved. So, these three components we see is very important and essential to blockchain networks. We've got here a three-layer cake that kind of shows these three concepts.
At the base, you've got the distributed ledger, then the consensus mechanism, and finally the smart contracts. But we're still kind of in early days when it comes to blockchain networks. And it's quite difficult to set up a blockchain network. It can be hard to stitch together a lot of this infrastructure and hard to get it going.
It can be difficult to scale when you're adding more members and growing your ledger, growing your network. It's also not always easy to keep it up and running and to maintain it. Security updates, governance, other challenges can be difficult. And all of the time and effort and expense it takes to manage these different things can all result in high costs. So at AWS, we sought to improve upon this situation.
And we built what we call “Amazon Managed Blockchain," which is a fully managed service that makes it easy to create and manage scalable blockchain networks using popular open source frameworks. The available blockchain protocols that we support today are Hyperledger Fabric and Ethereum. First of all, the network is fully managed.
And you can set up in minutes, what used to take hours or days to wait for your network to deploy. Because it's based on popular open-source projects, you know that you have a strong community of support. And you also know that if you need to do something that's a little more custom than you can actually achieve with a managed service, you can always fall back on a self-managed version. We've added some important features around the governance of the network, including convenience features that help you add and remove members to your network as you need to. And we’ve also backed… we've made tight integrations in our blockchain service with various underlying data and control plane technologies at AWS. So by integrating tightly with our data and control planes, you can achieve greater reliability, durability and scalability.
Like all of our services, this Managed Blockchain service is pay-as-you-go. You only pay for the resources you you're using, and you can turn them off at any time. And it's also tightly integrated with all the other services in AWS that you've come to know and love.
And you can easily create a solution that involves several services. So, now I'd like to talk a little bit about the private and public options that you have when you're dealing with our Managed Blockchain service. So, first, let's talk about some of the benefits and where private versus public might be what you'd want to choose.
So a private network is better when the participating organizations are known in advance. So if you've already identified which parties want to interact with each other, that's an indication that private may make more sense. Also, it tends to offer more advanced privacy features because these private networks have been built with enterprises in mind that realize that there are situations when they need to prevent certain data from being viewed by all the parties involved. The applications in a private network tend to be less decentralized than their public counterparts.
They achieve a sufficient level of decentralization to get the business work done, but they aren't quite as broadly distributed as public network often tend to be. Private networks support a higher transaction rate than usually is possible with public blockchains. And this is because they're confined to fewer parties, right? So if you have fewer parties involved, then replicating transactions across all these parties in a network can be done more quickly and also because the consensus mechanism requires less overhead in these networks. These can be a really good option for enterprises that need the practical benefits of decentralization now, as opposed to in the bright blockchain future, when the public networks mature to the point where they can support some of the privacy and high transaction rates that are required by many enterprises. The public networks also enable some really interesting things. First of all, participants can be anonymous, and aren't necessarily identified in advance.
So you can open a blockchain application to a wider public audience. Also, public blockchains enable unpermissioned applications that anyone can use. Essentially, they're unstoppable. With many public blockchain applications, no one needs to get permission prior to participating in these applications. These unstoppable applications can run autonomously, without depending on any private infrastructure.
And they enable easy access to other data sources that have also been shared on the blockchain. So because many different applications are running on the same blockchain, it now becomes possible for applications to leverage each other's data in interesting, new creative ways. And these public blockchains among many other use cases are currently enabling the development of what we call “decentralized finance” or DeFi which is a really exciting space that's growing rapidly.
So at AWS, in our Amazon Managed Blockchain service, we offer some options for both private and public networks. On the private network side, we offer Hyperledger Fabric. We currently support version 1.4, the long-term stable version of the 1.x series, which includes support for LevelDB and CouchDB.
It also includes support for anchor peers and private data collections. We've made some interesting improvements that I mentioned earlier, like our tight integration with the AWS data and control planes for greater reliability and scalability. We also have an improved trust model that's based on AWS Key Management Service, or KMS.
We also have some interesting governance features for adding and removing members, and automatic synchronization of channel peers, as well as the automatic propagation of fabric client identities that you create. We're making frequent improvements on the service and we'd love to hear more about your particular use cases and the things you'd like to see. In our recent release of Ethereum support, we offer dedicated Geth nodes that are managed by AWS, and you can provision these nodes in minutes on the mainnet, Ropsten and Rinkeby networks. And you have much faster sync than a typical blockchain a typical Geth node that you would normally start up, because we're using reference nodes and synchronizing the state of their blockchain regularly, so that when you launch a new blockchain node you're only catching up to the last little while of the blockchain activity. We also support higher availability through quick failover of faulty nodes, and auto scaling of node storage, so you don't have to worry about your disk space. So those are some of the interesting features that we provide that help with both private and public networks.
Now let's look at a few reference architectures and what your application might look like built on Amazon Managed Blockchain. So this first reference architecture focuses on a private network. And it's an example dapp or decentralized app that's built based on Hyperledger Fabric.
So what you see here, is on the right-hand side of the graph, we see an application that users are using. This could be a typical web or mobile application. So from the users’ perspective, the application experience can be just like they’re used to with any other web, or mobile app. Everything on the upper half of this diagram is infrastructure that's managed for you by AWS.
You don't have to worry about deploying a certificate authority or the ordering service, or those other things; these can all be deployed in minutes, just with a few clicks in our AWS Management Console. And then the stuff on the lower half of this diagram would be infrastructure that would be the responsibility of the customer. And we can see several service integrations that we're taking advantage of here.
The application is served using static content that's stored in an S3 bucket, and distributed over an Amazon CloudFront distribution. That static content indicates to the application how to connect to an API Gateway that then kicks off a lambda function that is used to actually update information on the blockchain network and also receive the changes that occurred back from that update. So, this is the path that we take to make changes in the blockchain application. But we also need to know about changes that are occurring that are the result of other users’ actions. And those are shown here on the fabric listener side, on the bottom left-and side of this diagram, where we have redundant fabric listeners running in Fargate, that receive events as they occur on the blockchain, and then store those events in a temporary data store that's a DynamoDB instance, as well as it could also be another RDS instance or some other purpose-built database. But essentially, the purpose of this database is both to deduplicate the events as they come in, because we have duplicate events for redundancy purposes, in case one of the listeners fails, and then also to trigger notifications when changes occur in the blockchain.
These push notifications can then be used to update the state of the application, or to send them to mobile devices or other things of that nature. This intermediate data store that we're using for deduplication of events could also serve a secondary purpose, which is it could be used for analytics and other kinds of deeper queries that you want to perform, that are more practical to perform on a relational database than they would be on the blockchain database. Now, in this second example, we are looking at a public blockchain application and that's in the form of an Ethereum dapp.
In this case, this dapp is going to publish a smart contract to the Ethereum mainnet, through an AMB managed node, a node that's managed by Amazon Managed Blockchain. It then can call methods on this smart contract. We have a container in Fargate that's listening for the contract events, and sending them to a Kinesis Data Stream for further processing.
So these event streams can be used for analytics, as well as visualizations of important blockchain events. So what we're showing here is ways that we can leverage these events in a more scalable way and use them in many different ways for consuming applications and downstream actors. Now, I'd like to talk a little bit about some customer stories. So Legal & General is an interesting customer use case. They're one of the largest re-insurance providers in the UK. They look after pension funds, which usually take 40 to 50 years to mature.
They then reinvest these funds to produce a return for the pensioners. They provide liquidity for retirement for individuals who are retiring. They need to be able to have those funds become available immediately while the investment is still tied up. And so L&G covers the risk to the individual pensioner.
And they use Amazon Managed Blockchain to facilitate the rebalancing of these investments across over 100 different funds that they have, which is another interesting settlement use case. Before they were doing this many pension management systems like theirs would use things like spreadsheets passed around over email and other challenging things that are prone to human error and other security issues. So, by automating this system across the several parties that are involved in the auditing and the management of these portfolios, they've been able to make a much more cost effective and productive useful service for their customers. Next, we have Contura Energy. They ship around eight to 10 million metric tons of metallurgical coal every year, which is used to make stainless steel.
All the axles used for cars in the US and other nations are usually in some way connected to Contura Energy. They ship to over 60 countries worldwide, and they have a relationship with buyers that has been for some time now, using a process that was last worked on in like 1933 that involves letters of credit. And what they wanted to do is improve this system so that these letters of credit could be tracked more automatically, in a more digitized way, that would be tracked on blockchain to make sure that every party involved could agree upon the state of the data. And what they resulted in was a system that used to take six months now takes only a few days. In a matter of two or three weeks, they can get these letters of credit totally tracked. And this provides them with much faster turnaround times and better liquidity when it comes to leveraging the cargoes that these letters of credit represent.
So, those are just a couple of the customers that we are showcasing today but of course, we are working with many other customers, as you see on this slide. And we're constantly hearing from other customers about the types of use cases that they would like us to support and the features that they're looking for in our Amazon Managed Blockchain service. I'm really excited to meet with you and hear more about your particular use case. So please don't hesitate to reach out to me or the rest of our team to talk about how you would like to leverage Amazon Managed Blockchain for your decentralized application.
I also want to call your attention to the fact that we have many resources for training and certification at AWS, some of which you can see on this slide. And I'd encourage you to reach out to look for the kind of training you need for your particular application. We can also offer you an Immersion Day on Amazon Managed Blockchain, which might help your team to get started and get up and running a little more quickly.
And we can help put you in touch with several other integration partners who can help you in other ways. And with that, I just like to thank you for spending time with me today learning a little bit about our Amazon Managed Blockchain service and blockchain in general. I'm really excited about this topic, and look forward to sharing more with you at a later date. And I want to ask you to please don't forget to complete the session survey before you go. Thank you so much.