Cardano’s development and quest to lead in the Web3 landscape continues. As Cardano approaches its first decade as a Web3 infrastructural base, multichain compatibility is becoming the norm. This approach, being a guiding compass for developments in Cardano, commands that essential tools adapt to the direction to remain relevant, interoperable, and aligned with the growing demand for unified blockchain activity and observability.
For the last eight years or so, observing and reacting to on-chain events has been a complex and technical task. To and from Cardano, bridges and cross-chain channels need a lot of development effort, forcing duplication across teams. In December 2021, the TxPipe team released Oura, a tool to examine, process, and observe the Cardano blockchain. In the last funding round in Catalyst at the time of writing, thirteenth by number (fund 13), the TxPipe task force rounded up to expand the capabilities of Oura.
This piece presents Oura from the developer’s perspective. In it, we give an overview of Oura, the need to go multichain, the benefits of the iteration, the technical outlook on the transition to multichain, and the key players involved. We wrap it up by discussing the project’s value to the Cardano ecosystem. Let’s delve in.
An Overview of Oura
Before diving into why Oura needs to go multichain and the technical aspects of the library expansion, we need to gather momentum by dissecting Oura from a technical standpoint. Let’s start by answering a few questions.
What is Oura?
“We have tools to “explore” the Cardano blockchain, which are useful when you know what you’re looking for.” — The TxPipe Team.
From the above statement found on Oura’s documentation intro page, it is crystal clear that the tool is a lens for viewing the Cardano blockchain. The indisputable truth is that there’s a different, or in other words, complementary, use case for reacting to particular events and patterns on observing the blockchain. This understanding, geared to serve all user observation needs, is the foundation upon which Oura is built.
Written in Rust, Oura is a battle-tested tool that builds data pipelines that connect Cardano’s on-chain events, such as blocks, transactions, certificates, etc., to external systems such as databases, webhooks, and work queues. Its modular architecture supports a wide array of plugins to fulfill Cardano-specific tasks. In fact, Oura is an application built by the Pallas Library, a Rust-native building block for the Cardano blockchain in the realm of high-level applications such as wallets, explorers, wallets, and, in the future, a full node, hopefully. But this is only for the foundation, leaving the latter part of the pipeline implementation powered by the Gasket library, a framework for building staged, event-driven software. Each component of the pipeline under this abstraction runs its thread and interacts with other components by sending messages in a similar way to the Actor pattern.
How Does Oura Work?
How Oura operates within the Cardano ecosystem is by communicating with Cardano nodes through the Pallas Library. In action, Pallas provides an instance of the Ouroboros multiplexer and the required mini-protocol state machines — Chainsync and LocalState, to be specific. As for the data pipeline, Oura leverages multithreading and multi-producer, single-consumer, sourced from the std::sync library.
As the base, this implementation is a Cardano node, after which the data pipeline connects to through a unix socket or transmission control protocol (TCP), filters the event to meet particular criteria or match a specific pattern(s), and consequently ejects a clear, self-contained payload to a pluggable observer known as sinks. In this case, sinks where the “reaction” happens, in the form of a webhook, database, message queue, if you’re on Kafka, Redis, or a cloud function in Azure, or AWS Lambda, for instance.
Oura’s operation model works as an events processing pipeline with three consecutive stages, each handling a distinct task.
- Source — Pulls data from the Cardano blockchain, maps the data into smaller and granular events, and sends each event to the output port for further processing in the next stage.
- Filter — Picks up individual events from the source, then applies case-specific transformations, often selecting relevant events to enrich them with extra information.
- Sink — Collects final events from filtration and submits the payload to external systems for further processing or triggering some other functionality.
What Problems does Oura solve for Cardano Developers?
To developers, Oura is a razor-sharp software development kit that serves different needs as listed below:
- Watching live transactions on the command line — Developers can print transaction data from a node (whether local or remote) as a way to debug their applications. Curious network participants can visualize what’s ongoing in the network, active airdrops being an example.
- Bridging to other consistent mechanisms — Likened to the db-sync by IOHK, Oura can be used to trace back a node’s data and propagate it to different storage for final use. In differentiation, Oura is designed for easy integration with data streaming pipelines instead of relational databases.
- Triggering custom actions — Once configured, Oura pinpoints target transaction patterns to trigger actions when a match is found. An example is sending an email when a particular policy or asset combination is met. Another would be calling an AWS function once a wallet delegates to a particular pool. Or, it could send a webhook upon certain metadata appearing in a transaction payload.
- Customizable library for specific actions — Occasionally, the predefined features may not be the best fit for your use cases. Oura can be tailored to meet user-specific pipelines now that each component (source, filter, sink, etc.) is self-contained and reusable. In practice, custom filters and sinks can be built, reusing existing sources—it’s all up to you and the problem at hand.
The Need for Multichain Expansion
With Cardano’s inclusion in the U.S. strategic reserve, there’s a compelling need to lower the entry barrier for implementing bridges and cross-chain messaging. Reusable building blocks in the developers’ kit can significantly reduce development costs. A question that pops up is why Oura needs to go multichain. Plenty are the reasons, but we will only mention a few here, listed in no particular order.
- Unified developer experience — Right now, you need many diverse and different sets of tools, application programming interfaces, and architectures to track on-chain events across various networks like Bitcoin, Ethereum, Cardano, and Polkadot, for example. A multichain Oura means a single familiar interface to work with, no matter the blockchain ecosystem you’re exploring.
- The rise of cross-chain applications — In the realms of decentralized finance (DeFi), gaming, and digital identities, cross-chain by design has unlocked many opportunities. To synchronize data, monitor activity, or trigger automation, a tool that understands all networks is needed, and more so, an observability layer for multichain in real time.
- Consolidating Infrastructure — Supporting multiple indexing tools across different ecosystems is resource intensive. A unified pluggable tool that supports UTXO chains (Bitcoin and Cardano), account-based chains like Ethereum, and runtime flexible chains like Substrate chains means less operational complexity, time, and resources.
- Growth for the Cardano Ecosystem — Once a Cardano-first tool goes multichain, it is expected that Cardano will strengthen its position in Web3. As a result, more developers, investors, and enterprises will eye Cardano with an amplified sentimental perspective. Practically,
- Building for adaptability and evolution — Looking into the future, it’s a world of chain specialization. Simply put, each chain serves a different purpose, biased from the blockchain generation’s perspective. Oura, with multichain capabilities, acts as a connective tissue for monitoring, indexing, and triggering cross-chain logic.
Evolving Oura into a Multichain Data Pipeline Framework
Extending the Oura library to multichain entails building connectors to the following networks:
- Bitcoin — An Oura plugin connecting to a Bitcoin RPC endpoint to process Bitcoin blocks and transactions.
- Ethereum — An Oura add-on that links to an Ethereum-compatible JSON-RPC endpoint to cater to ETH blocks, logs, and transactions.
- Substrate — An Oura module to support a substrate-compatible JSON-RPC endpoint that processes substrate blocks, logs, and extrinsics. If you’re unfamiliar with substrate blockchains, they are customizable networks targeting at specific problems. An example is Polkadot, a flagship network, or Phala for privacy computing.
More about how these networks could collaborate with Cardano in a future article. Enter the technical build.
Technical Overview of Oura’s Multichain Transition
Enhancing Oura is a three-step process, each step building on its predecessor. At the time of this writing, only the first one is complete.
First, the TxPipe team will do project scaffolding, an automated way to generate a project’s basic structure for an application. You can think of this as a starting point for development. In any other software development project, a scaffold will encompass files/folder structures, starter or boilerplate code, tool pre-configurations in the context of linters, build systems, or frameworks, and some basic logic like routing or state management. The `create-react-app` is a good example for building a perspective here if you’ve never encountered one or are unaware of it.
By the end of this milestone, stubs should be available for the three target networks. Stubs are minimum implementations of modules, components, or functions (depending on how you refer to them and the context relative to a project) that simulate the actual code yet to be written. In this case, all component stubs will be ready for feature development, and continuous integration/continuous development (CI/CD) is also in place for different artifacts, all in a public repository.
Second, next in line are blockchain integration milestones. For the target networks, Bitcoin, Ethereum, and Substrates, each will have a functional source plugin, capable of connecting to its respective endpoints, processing its blocks and transactions. As evidence of completing these milestones, each network will have its code open-sourced for public view. At this point, we will also see a new binary release of Oura with these plugins and a comprehensive documentation for the plugins. Additionally, expect a video demonstration to showcase the connections to each node.
Third, the cross-messaging reference implementation is next. This milestone involves implementing a basic wrapped-asset bridge where each target network has a functional chain observer. By now, developers can consume the updated Oura in their applications to create custom solutions for problems. Demonstration examples will be accessible from the documentation, accompanied by video showcase demos for each network. On closure, the team will provide a detailed final report on all the development progress to link up the proposed solution and the complete enhanced Oura software.
Key Stakeholders and Project Funding
TxPipe has consistently delivered unmatched projects within the Cardano ecosystem. Over the past two years, we’ve maintained continuous activity on GitHub, building a reliable collection of public repositories that power many dApps. Having completed several Catalyst proposals, the developmental team has acquired expertise and understands developers’ needs from a technical perspective.
On the note of resources required, the work entails software development: ₳ 154,286, technical documentation: ₳ 8,571, infrastructural management (site reliability engineering): ₳ 22,857, and project management: ₳ 12,857, all estimated to take a six-month development timeline. Below are the members:
- Santiago Carmuega — An enthusiastic IT entrepreneur seeking new business models through technological innovation. In his Career, Santiago has been a developer, quality assurance specialist, architect, manager, and product owner. He is the founder of TxPipe.
- Federico Weill — A founding TxPipe team member, currently serving as the chief operations officer. He brings expertise in blockchain development and big data management for tech companies.
- Rodrigo Suaya—An experienced product and business manager with over ten years in startups, he is currently bridging a better developer experience in the Cardano network in the quest to build impactful blockchain solutions.
- Felipe Gonzalez — An all-around techie playing software engineer at TxPipe. He is also a technical team leader and project manager at TxPipe, working on Cardano apps development, notably the TxPipe shop.
- Paulo Bressan — A passionate open-source software engineer driving innovations in technology on the Cardano blockchain. In the last decade, Paulo has worked with six software development companies in data, games, e-commerce, AI, and project management software.
- Franco Luque — A senior software engineer at PxPipe. Franco is also the founder of Filabs, a software development, advertising, and consulting company in Web2 and Web3 development on Cardano.
A Multichain Oura for the Cardano Ecosystem
Falling under software development, the bulk of this project to directly address the need for cross-chain compatibility in the evolving Web3 landscape. As Cardano rapidly grows, gathered from the rising number of L1s, L2s, and L3s, developers face increased complexity and fragmentation. A key determinant and influencer of Web3 adoption is seamless communication between the siloed blockchain ecosystems. A multichain Oura is the solution to this problem.
By empowering developers with the necessary tools to implement bridges between Cardano and other ecosystems, Cardano benefits from increased liquidity. It also prompts new use cases and makes Cardano more attractive for enterprise adoption. Cardano operates over 4,000 stake pools, making it an ideal fit and a suite of sophisticated settlement layers. This initiative’s primary goal is to drive on-chain activity and increase appreciation for ADA as a base asset.
You can learn more about Oura and the TxPipe team by reading through the funded project proposal on Project Catalyst, the official website, and, if you’re technical enough, browsing through TxPipe’s GitHub repositories to look at their code solutions built for Cardano developers.