DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Please enter at least three characters to search
Refcards Trend Reports
Events Video Library
Refcards
Trend Reports

Events

View Events Video Library

Zones

Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks

Modernize your data layer. Learn how to design cloud-native database architectures to meet the evolving demands of AI and GenAI workkloads.

Secure your stack and shape the future! Help dev teams across the globe navigate their software supply chain security challenges.

Releasing software shouldn't be stressful or risky. Learn how to leverage progressive delivery techniques to ensure safer deployments.

Avoid machine learning mistakes and boost model performance! Discover key ML patterns, anti-patterns, data strategies, and more.

Related

  • Bridging the Gap: Better Token Standards for Cross-Chain Assets
  • Deploying Smart Contract on Ethereum Blockchain
  • How To Use Ethereum Events Properly: An Solidity Dapp Tutorial
  • The Power of Zero-Knowledge Proofs: Exploring the New ConsenSys zkEVM

Trending

  • Emerging Data Architectures: The Future of Data Management
  • Understanding Java Signals
  • Doris: Unifying SQL Dialects for a Seamless Data Query Ecosystem
  • How to Configure and Customize the Go SDK for Azure Cosmos DB
  1. DZone
  2. Popular
  3. Open Source
  4. Enterprise Integration for Ethereum

Enterprise Integration for Ethereum

This article takes a look at the Ethereum Ecosystem and also the Apache Camel connector for Ethereum. Let's also look at use cases for Apache Camel.

By 
Bilgin Ibryam user avatar
Bilgin Ibryam
·
Jul. 27, 18 · Opinion
Likes (2)
Comment
Save
Tweet
Share
4.4K Views

Join the DZone community and get the full member experience.

Join For Free

The Ethereum Ecosystem

Ethereum is an open-source, public blockchain platform for running smart contracts. It provides a decentralized Turing-complete virtual machine that can execute scripts and a cryptocurrency used to compensate participant mining nodes for computations performed or to mitigate spam. Today, Ethereum is one of the most established and mature blockchain platforms, with interest from small and large companies, nonprofit organizations, and governments. There is a lot that can be said about the Ethereum ecosystem and the pace it moves. However, the facts talk for themselves; Ethereum has the momentum and all the indications of a technology with potential:

  • Ethereum has an order of magnitude and more active developers than any other blockchain platform, and as dictated by the Metcalfe's law, this gap widens day by day. Ethereum coding school CryptoZombies has over 200K users, and Truffle development framework has over half a million downloads.
  • The Ethereum platform has the richest tools and infrastructure ecosystem for building decentralized applications: Truffle, Infura, Web3.js, OpenZeppelin, Geth, Parity, Ganache, MetaMask, CryptoZombies, MyCrypto, Etherscan, ERC20 (for ICOs), etc.
  • The cloud platforms Amazon Web Services and Microsoft Azure offer services for one-click Ethereum infrastructure deployment and management.
  • The Ethereum technology has the interest of enterprise software companies. Customized Ethereum-based applications are being developed and experimented with by financial institutions such as JPMorgan Chase, Deloitte, R3, Innovate UK,  Barclays, UBS, Credit Suisse, and many others. One of the best-known in this area is the J. P. Morgan Chase-developed permission of the Ethereum blockchain called Quorum.
  • In 2017, Enterprise Ethereum Alliance (EEA) was setup up by various blockchain start-ups, Fortune 500 companies, research groups, and others with the aim to help the adoption of Ethereum-based technology. It provides standards and resources for businesses to learn about Ethereum and leverage this groundbreaking technology to address specific industry use cases.

Ethereum has passed the moment when it was a hipster technology or a scientific experiment, and now, it is a fundamental, open-source, decentralization technology that enterprise companies are looking into. Talking about open source and the enterprise, I thought I would also make my tiny contribution to the Ethereum ecosystem and help with its adoption.

Open Source Enterprise Integration

Ethereum is distributed and decentralized, but it is mostly a closed system with the embedded ledger, the currency, and the executing nodes. In order to be useful for the enterprise, Ethereum has to be well integrated with existing legacy and new systems. Luckily, Ethereum offers a robust and lightweight JSON-RPC API with good support for the JavaScript language. However, in enterprise companies, JavaScript is not the primary choice for integration. It is rather Java, followed by .Net. Java is not necessarily lightweight or fast-evolving, but it has a huge developer community and a mature library ecosystem, making it the top choice for the majority of enterprise companies. The main factor contributing to the productivity of the Java language is the reuse of existing libraries and avoiding reinventing the wheel. One of the most popular libraries enabling reuse and avoiding reinventing the wheel for integration is Apache Camel. Luckily, Camel happens to be my passion and a project I have been contributing to for many years, so connecting the two was the most natural thing for me to do.

Apache Camel building blocks

Building Blocks of Apache Camel

For those who are coming from a blockchain background and are not familiar with Camel, here is a very brief intro. Apache Camel is a lightweight open-source integration library that is composed conceptually of three parts:

  • Implementations of the widely used Enterprise Integration Patterns (EIPs). (Notice this is not an Ethereum Improvement Proposal that shares the same acronym.) EIPs provide a common notation, language, and definition of the concepts in the enterprise integration space (think of publish-subscribe, dead letter channel, content-based router, filter, splitter, aggregator, throttler, retry, circuit breaker, etc.). Some of these patterns have been around for over a decade, and some are new, but they are well-known by anyone doing messaging and distributed system integration for a living.
  • The second major part of Apache Camel is the huge connectors library. Basically, as long as there is a Java library for a protocol, system endpoint, or SaaS API, most likely there is a Camel connector for it (think of HTTP, JMS, SOAP, REST, AWS SQS, DropBox, Twitter, and now Ethereum, etc.). Connectors abstract away the complexity of configuring the different libraries and provide a unified URI-based approach for connecting to all kinds of systems.
  • And the last piece of Apache Camel is the Domain Specific Language (DSL) that wires together connectors and EIPs in a higher level integration focused language. The DSL, combined with connectors and patterns, makes developers highly productive in connecting systems and creates solutions that are industry standard and easier to maintain for long periods. All these are characteristics that are important for enterprise companies looking to create modern solutions based on mature technology.

Companies are more integrated than ever, and the systems within the companies are more integrated than ever. And if you are a Java shop, most likely, there is already some Apache Camel-based integration in use somewhere in the organization. Now you can use Camel and all the capabilities it provides also to talk to Ethereum.

Apache Camel Connector for Ethereum

The natural intersection of the two technologies is a Camel connector for Ethereum. Such a connector would allow for the integration of Ethereum with any other system, interaction style, and protocol. For that purpose, I evaluated the existing Java libraries for Ethereum and came to the conclusion that web3j is the right fit for this use case. Web3j is an actively developed, feature-rich Java library for interacting with Ethereum-compatible nodes over JSON-RPC. Camel-web3j connector (the technical name for the Camel Ethereum connector) is a thin wrapper that gives an easy way to use the capabilities offered by web3j from Apache Camel DSL. Currently, the connector offers the following features:

  • Works with Geth, Parity, and Ganache.
  • Support for Infura API.
  • Support for JP Morgan's Quorum API.
  • Support for JSON-RPC API over HTTP and IPC.
  • Implementation of all web3, net, eth, and shh operations.
  • Support for filters. 
  • Support for Ethereum Name Service (ENS).
  • Fully unit and integration tested (over 100 and growing).

The full power of this integration comes not from the connector features but when the connector is used together with the other connectors, patterns, and all other Camel capabilities to provide a complete integration framework around Ethereum.

Ethereum Compatible JSON-RPC APIsEthereum Compatible JSON-RPC APIs

Next, I'm going to focus on adding support for Parity's Personal and Geth's Personal client API, Ethereum wallet support, and others. The aim is to keep the component up-to-date with the web3j capabilities that are useful in system-to-system integration scenarios with Apache Camel. The connector is pushed to Apache Camel 2.22 and ready for early adopters to give it a try and provide feedback. To get started, have a look at the unit tests to discover how each operation is configured and the integration tests to see how to connect to Ganache or Ethereum mainnet, etc. Enjoy.

Use Cases for Apache Camel

Below is the Enterprise Ethereum Architecture Stack (EEAS), which represents a conceptual framework of the common layers and components of an Enterprise Ethereum (EE) application according to the client specification v1.0.

Enterprise Ethereum Architecture StackEnterprise Ethereum Architecture Stack

If you wonder where exactly Camel fits here, Camel-web3j is part of the tooling layer as an integration library with a focus on system-to-system integration. It uses the public Ethereum JSON-RPC API, which any Enterprise Ethereum compatible implementation must support and keep backward compatible with.

Then, Camel would primarily be used to interact with services that are external to Ethereum but trusted by smart contracts (so-called Oracles). In a similar manner, Camel can be used to interact with Enterprise Management Systems to send alerts and metrics, report faults, change configurations, etc.

The main use cases I can think of for this connector are:

  • Listen for new block events happening in the Ethereum network, filter, transform, enrich and publish them into other systems. For example, listen for new blocks, retrieve their transactions, filter out uninteresting ones, enrich others, and process them. That can be done using Ethereum node filter capabilities or purely with Camel, using polling consumers to query a node periodically and idempotent filters to prevent processing previously processed blocks, etc.
  • The other use case would be to listen for events and commands coming from an enterprise system (maybe a step in the business process) and then tell the Ethereum network about it. For example, a KYC is approved or payment is received in one system, which causes Camel to talk to the second system and retrieve a user's ERC20 address and perform an Ethereum transaction.

Real-world uses of Camel would involve a more complex mixture of the above scenarios, ensuring high availability, resilience, replay, auditing, etc., in which Camel is really good.

Ethereum Oracle Implemented in Apache Camel

"Talk is cheap. Show me the code." — Linus Torvalds

On many occasions, smart contracts need information from the real world to operate. An oracle is, simply put, a smart contract that is able to interact with the outside world. The demonstrate the usage of Camel-web3j, I created a Camel route that represents an oracle. The route listens for CallbackGetBTCCap events on a specific topic, and when such an event is received, the Camel route generates a random value and passes it to the same contract by calling the setBTCCap method. That is basically a "Hello world!" the Ethereum way.

To trigger the event, you can call the updateBTCCap method on the smart contract using the following unit test:

mvn test -Dtest=CamelOracleRouteTest#updateBTCCap


To check the current price in the contract, you can call the getBTCCap method on the smart contract using the following unit test:

mvn test -Dtest=CamelOracleRouteTest#getBTCCap


Check the full instructions, the smart contract, and Camel routes on GitHub, and try it for yourself. If you use the component and have questions or feedback, if you like this and you are interested in implementing Camel connector for other blockchain projects, reach out. Take care.

Ethereum Enterprise integration Apache Camel Open source Smart contract

Published at DZone with permission of Bilgin Ibryam, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

Related

  • Bridging the Gap: Better Token Standards for Cross-Chain Assets
  • Deploying Smart Contract on Ethereum Blockchain
  • How To Use Ethereum Events Properly: An Solidity Dapp Tutorial
  • The Power of Zero-Knowledge Proofs: Exploring the New ConsenSys zkEVM

Partner Resources

×

Comments
Oops! Something Went Wrong

The likes didn't load as expected. Please refresh the page and try again.

ABOUT US

  • About DZone
  • Support and feedback
  • Community research
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Core Program
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 3343 Perimeter Hill Drive
  • Suite 100
  • Nashville, TN 37211
  • support@dzone.com

Let's be friends:

Likes
There are no likes...yet! 👀
Be the first to like this post!
It looks like you're not logged in.
Sign in to see who liked this post!