funded
Boros: Tx submission for intense workloads by TxPipe
Current Project Status
In Progress
Amount
Received
₳31,800
Amount
Requested
₳198,750
Percentage
Received
16.00%
Solution

We will build a generic backend component that serves as a smart, massive mempool. It can be used by dApps directly out-of-the-box as a resilient and performant mechanism for tx submission.

Problem

Boros

dApps with intense transaction submission workloads require high throughput, resilience and observability. Implementing this infrastructure is complex and it’s usually not a core concern for dApps.

Impact Alignment
Feasibility
Value for Money

txpipe

2 members

Boros: Tx submission for intense workloads by TxPipe

Please describe your proposed solution

Submitting an isolated Cardano Tx is simple enough. Submitting a constant stream of transaction with a high-level of a assurance and performance is quite complex. We want to build a generic backend component that can be used by dApps that have intense submission workloads.

We're building a new infrastructure component called Boros, that can be used by dApp teams as a smart, massive pipeline for transaction submission. It will include the following features:

<u>Resilience</u>

  • Persistent queues: Boros uses persistent message queues through pluggable backend technologies such as Kafka, Redis and Postgres; allowing dApps to fire-and-forget transaction without the risk of data loss.
  • Tx Monitoring: an automated procedure will monitor submission, confirmation and rollbacks of transactions, updating in real-time the status of each.
  • Retry Mechanism: Boros includes an automatic retry mechanism using configurable policies to handle confirmation timeouts or rollbacked transaction.

<u>Throughput</u>

  • Peer Fanout: an outbound connection manager will connect to multiple peers simultaneously using node-to-node protocols to propagate transactions as efficient as possible.
  • Configurable Topology: a static topology can be provided via configuration for scenarios where outbound relays are known in advance.
  • Dynamic Topology: a dynamic topology can be constructed automatically using on-chain relay data from pool certificates or via p2p networking using the peer sharing mini-protocol.

<u>Smart submission</u>

  • TX-Chaining: chaining is a mechanism to drastically improve throughput that involves careful management during the submission phase. Boros will be detect chained txs and maintain the required "session affinity" against the upstream peer.
  • Priority Queues: Boros will have support for different priority queues with configurable policies, allowing high-priority txs to jump ahead of lower priority ones.
  • Server-side Signatures: for dApps that require it, Boros will support server-side tx signatures by integrating battle tested key managers such as Hashicorp Vault.

<u>Developer Experience</u>

  • Lightweight Process: Boros will be a very lightweight process with little resource footprint.
  • No Dependencies: Boros will connect directly to peers using node-to-node miniprotocols. No Cardano node will be required to run Boros.
  • Friendly API: Boros will support different API mechanism to queue transactions via three different alternative protocols: HTTP, WebSockets and gRPC.
  • Notification WebHooks: Boros will have the option to configure webhooks to receive notifications for status change from the submission pipeline. Devs will be able to subscribe to events such as: Tx submitted, Tx confirmed, Tx rolled-back, Tx retry).

<u>Observability</u>

  • Prometheus metrics: Boros will ship with Prometheus metrics, allowing operators to measure throughput, performance, health, peer status and more. We'll also include default Grafana dashboards that can be used out-of-the-box or customized.
  • Management API: Boros provides an API that can be used to execute special management operation such as queue configuration, tx monitoring, tx removal, tx prioritization, etc.
  • Detailed Logging: Boros outputs structured logs detailing the the different state transitions of txs in the queue, along with other relevant processing events. This logs can be used for debugging but also for future traceability of activities.

Please define the positive impact your project will have on the wider Cardano community

The process of transaction submission is a generic concern shared by almost all Cardano dApps. By providing a reusable infrastructure component that solves the problem in a generic way, we allow dApps to offload this complexity and focus on core concerns for their particular use-case.

What is your capability to deliver your project with high levels of trust and accountability? How do you intend to validate if your approach is feasible?

TxPipe is an active member of the Cardano ecosystem

TxPipe has been developing open-source tools for the Cardano ecosystem for over 2 years and we're not going anywhere. Evidence of our commitment can be found by evaluating the continuous activity of our public code repositories.

Experience developing in the Cardano ecosystem

TxPipe has helped developed several dApps for the Cardano ecosystem. This experience allows us to evaluate the feasibility of the project and its potential benefit from a developer's perspective.

Successful Catalyst proposals

We have successfully completed several Catalyst proposals. This may serve as evidence that our team has the required capabilities to fulfill these type of projects.

Development process will be public and open-source

Both the output and the development process will be public and open-source. This approach provides an easy way for the Catalyst team and the Cardano community to evaluate the progress at each step of the process.

What are the key milestones you need to achieve in order to complete your project successfully?

Milestone 1: Scaffolding

Milestone outputs

  • Publicly available source-code containing the project scaffold
  • A stub of the fanout mechanism that includes the relevant API interface
  • A stub of the monitoring mechanism that includes the relevant API interface
  • A stub of the smart-submission mechanism that includes the relevant API interface

Acceptance criteria

  • The interface for the fanout mechanism matches the feature requirements
  • The interface for the monitoring mechanism matches the feature requirements
  • The interface for the smart-submission mechanism matches the feature requirements

Evidence of milestone completion

  • Source-code available in the Github repository

Milestone 2: Fanout Mechanism

Milestone outputs

  • publicly available source-code for the tx fanout mechanism
  • documentation on how to configure the fanout mechanism
  • report with benchmarks and integration test results

Acceptance criteria

  • the fanout mechanism propagates transactions to peers successfully
  • the fanout mechanism connect to multiple peers simultaneously using node-to-node protocols
  • a static topology can be provided via configuration and it's honored by the fanout mechanism.
  • a dynamic topology can be constructed automatically using on-chain relay data from pool certificates
  • a dynamic topology can be constructed via p2p networking using the peer sharing mini-protocol.

Evidence of milestone completion

  • Source-code available in the Github repository
  • Documentation published at custom website
  • Reports included as part of the Github repository

Milestone 3: Persistence, Monitoring and Retry logic

Milestone outputs

  • publicly available source-code for the persistence mechanism
  • publicly available source-code for the monitoring mechanism
  • publicly available source-code for the retry mechanism
  • documentation on how to configure the new features
  • report with benchmarks and integration test results

Acceptance criteria

  • tx requests are successfully persisted in message queues for each of the available backends (Kafka, Redis, Postgres)
  • transactions are lifecycle is monitored by the system and the status for each item is queryable in real-time.
  • transactions which timeout or are rolled-back get retried according to the configured policy.

Evidence of milestone completion

  • Source-code available in the Github repository
  • Documentation published at custom website
  • Reports included as part of the Github repository

Milestone 4: Smart Submission Features

Milestone outputs

  • publicly available source-code for the tx-chaining logic
  • publicly available source-code for the priority queue logic
  • publicly available source-code for the server-side signature mechanism
  • documentation on how to configure the new features
  • report with benchmarks and integration test results

Acceptance criteria

  • the submission process maintains affinity of chained txs to the same upstream peer.
  • different priority queues can be configured and the system prioritizes submission accordingly.
  • flagged transactions are automatically signed by the system using a Hashicorp Vault service.

Evidence of milestone completion

  • Source-code available in the Github repository
  • Documentation published at custom website
  • Reports included as part of the Github repository

Final Milestone: Final report

Milestone outputs

  • publicly available source-code of the complete system
  • a video showcasing the final output of the project
  • a final report describing the project process and outcome

Acceptance criteria

  • the final system can be used as a backend for bulk transaction submission.
  • the final video complies with Catalyst requirements.
  • the final report complies with Catalyst requirements.

Evidence of milestone completion

  • Source-code available in the Github repository
  • Documentation published at custom website
  • Final video uploaded to Google drive
  • Final report uploaded to Google drive

Who is in the project team and what are their roles?

  • Santiago Carmuega - TxPipe : Rust Developer /Tech Lead - Github
  • Federico Weill - TxPipe : Project Manager - Linkedin
  • Alejandro Avagnina - TxPipe : Site Reliability Engineer - Github
  • Clark Alesna - TxPipe: Rust and Aiken Developer - Github
  • Paulo Bressan - TxPipe: Rust Developer- Github
  • Felipe Gonzalez - TxPipe: Rust Developer - Github

Please provide a cost breakdown of the proposed work and resources

FTE = Full-time equivalent

Total budget = ₳ 198,750

Software development

  • Rust developer: 2 FTE x 4 months = ₳ 180,000
  • Technical Writer: 1/2 FTE x 2.5 months = ₳ 9,375

Project Management

  • Project Manager: 1/4 FTE x 5 months = ₳ 9375

No dependencies.

How does the cost of the project represent value for money for the Cardano ecosystem?

The bulk of the budget falls under the software development category. TxPipe has extensive experience in the field, allowing it to provide good value for money. The hourly rates are defined using fair market prices. The estimation for the level of effort takes into account all of the optimizations that our team is capable of providing after years of experience developing software solutions in the Cardano ecosystem.

close

Playlist

  • EP2: epoch_length

    Authored by: Darlington Kofa

    3m 24s
    Darlington Kofa
  • EP1: 'd' parameter

    Authored by: Darlington Kofa

    4m 3s
    Darlington Kofa
  • EP3: key_deposit

    Authored by: Darlington Kofa

    3m 48s
    Darlington Kofa
  • EP4: epoch_no

    Authored by: Darlington Kofa

    2m 16s
    Darlington Kofa
  • EP5: max_block_size

    Authored by: Darlington Kofa

    3m 14s
    Darlington Kofa
  • EP6: pool_deposit

    Authored by: Darlington Kofa

    3m 19s
    Darlington Kofa
  • EP7: max_tx_size

    Authored by: Darlington Kofa

    4m 59s
    Darlington Kofa
0:00
/
~0:00