Note
The following document is a proposal for the Amaru project. It is a collective document that describes the vision and the needs of multiple entities/actors involved in the development of Amaru.
It is meant as a starting point for discussing Cardano treasury withdrawals in alignment with the incoming constitution.
As such, we invite anyone interested to comment on the following document, and share feedback with us.
Amaru is an open-source project that aims to build a new fully interoperable block-producing node for improving the overall accessiblity and robustness of the Cardano network without compromising on its satefy and security. Amaru provides another perspective and solution for stake pool operators and developers alike, focusing on modularity and easy-of-use. The project is implemented mainly in Rust and aims to attract new contributors to the core maintenance of the ecosystem.
This proposal is designed to breakdown the objectives, scopes, timelines and costs pertaining to Amaru. It delivers the full vision behind the project and open the discussion regarding a Cardano treasury withdrawal to sustain its development.
Given the length of our proposal, we first provide a high-level overview of the project. The second part of the document goes into more details about the specifics of the Amaru project.
We consider that the current ask is a significant amount of money for a project proposal. We are also well-aware of the challenge (and therefore risks) that the project represents. However:
In addition, the sizing of this proposal stems from a few assumptions:
Project | RETH |
---|---|
Description | A high-performance, modular, and open-source Ethereum execution layer client developed in Rust to enhance speed, efficiency, and client diversity for the Ethereum network |
Timeline | 2 years of development before mainnet |
Dedicated team | 8 core developers; 90 contributors |
Roughly estimated overall cost | >3M$ |
Project | Firedancer |
---|---|
Description | A high-performance, C++-based validator client for Solana, to enhance scalability, decentralization, and network efficiency by optimizing transaction throughput and reducing system bottlenecks |
Timeline | 2 years of development (still ongoing) mainnet targetted for 2025 |
Dedicated team | no public figures available |
Roughly estimated overall costs | >5M$ |
Project | Cardano-node |
---|---|
Description | The core implementation of Cardano's blockchain, written in Haskell, enabling decentralized transaction processing, consensus mechanisms, and smart contract execution within the Cardano ecosystem |
Timeline | Started with the Byron release on 2017, still ongoing |
Dedicated team | no public figures available |
Rougly estimated overall costs | >20M$ |
Tip
As our project is closer to RETH in its setup and environment this will be our target when coming down to the final estimate comparison.
You will find here the result of the estimation:
Scope | Resource estimated |
---|---|
Ledger | 2.5 FTEs |
Consensus | 2.5 FTEs |
Ad-hoc mercenaries | 2 FTEs |
Testnet | 0.5 FTE + $60k (infrastructure costs) |
Mempool | 0.5 FTEs |
UTxO RPC | 0.5 FTEs |
Network (P2P) | 0 FTEs |
Total estimated for our assumption of 2025 delivery: 8.5 FTEs and 60k$ worth of infrastructure costs.
Here are the already funded that have resources allocated or a funding secured:
Scope | Resources already secured |
---|---|
Ledger | 1 FTEs |
Consensus | 1 FTEs |
Ad-hoc Mercenaries | 0 FTE |
UTxO RPC | 0 FTE |
Network (P2P) | 0 FTE |
Mempool | 0 FTE |
Testnet | 0 FTE |
Total of the resources already available or funded: 2 FTEs from people that are employees of the Cardano Foundation.
Tip
The bounded context owners will also dedicate time managing their activity on the project but this has not been reflected in the above FTE evaluation.
Here are the treasury ask for each scope:
Scope | Resource estimated | Resources already secured | Resources asked |
---|---|---|---|
Ledger | 2.5 FTEs | 1 FTEs | 1.5 FTEs |
Consensus | 2.5 FTEs | 1 FTEs | 1.5 FTE |
Ad-hoc Mercenaries | 2 FTEs | 0 FTE | 2 FTEs |
Testnet | 0.5 FTE + $60k (infrastructure costs) | 0 FTE | 0.5 FTE + $60k |
Mempool | 0.5 FTEs | 0 FTE | 0.5 FTE |
UTxO RPC | 0.5 FTEs | 0 FTE | 0.5 FTE |
Network (P2P) | 0 FTEs | 0 FTEs | 0 FTE |
Total of the asked for our proposal: 6.5 FTEs + $60k.
Given our assumptions the valuation of this proposal based on a $200k comes down to: 6.5 * $200k + $60k = $1360k
Given our assumption regarding our optimism bias (add 25% of contingency), here are the final figure for each scope:
Scope | Resources asked |
---|---|
Ledger | $300k |
Consensus | $300k |
Ad-hoc Mercenaries | $400k |
Testnet | $210k |
UTxO RPC | $150k |
Mempool | $150k |
Network (P2P) | $0 |
Contingency | $340k (FTE: $325k + Infrastructure: $15k) |
TOTAL | $1700k |
The proposal submitted will be targetting: $1.7M as a result of the scopes covered in Amaru.
Below in this document you will find details on:
Our main challenge as a team was to put into perspective what it means to build a Cardano node and dissecting this meaning into building components that are bringing the modular aspect of our product to life.
We looked into many methodologies and frameworks, and none of them really fit with both the vision and the environment of the project.
What we designed is a customised framework that has 2 majors phases:
This representation encapsulates all the phases imagined for designing and running the Amaru project:
Currently (December 2024) Step 3 is completed and each project scopes and interfaces are mapped out. Each scope owner manages its demo driven release plan aligned with the project's objectives.
Our objective during that phase was to create clear and compelling problem statements that establishes a starting point to quickly understand:
While starting out the discussion one topic was clear, we need diversity in the people contributing right from the start. The initial team that contributed to this design phase came from 6 companies: Blink Labs, Cardano Foundation, dcSparks, IOHK, Sundae Labs, TxPipe. The positions included were also of a varied range: CEO, COO, CTO, Senior developer, Project manager, SPO.
If you want to better understand the extent of the project and see what we went through you can have a look into the results of the design phase here: Amaru documentation: Design phase results It includes an overview of the problems statements that were identified, the people that we chose as stakeholders and the overall architecture setup we drafted. Keep in mind this is the current results, it may be subject to change depending on the direction we want to take and the use case we will be facing.
For this proposal we will take into account the results and focus on the execution of the project.
Now that we have a better understanding of the problems we want to solve, the global architecture of our product and have identified the scopes that each team will deliver, let's look into how we will organize the project to achieve everything we want to do.
Our definition of a bounded context in our project is: "An autonomous scope included in the overall architecture of the product. The bounded context owner who has the responsibility of driving the activity and aligning with stakeholders the deliveries and managing interfaces."
Each bounded context owner has the responsibility of managing everything in order to deliver an integrated scope for the project. They also have ownership of decision making for everything related to their allocated budget. (that will be described later on in that document)
Having those scope owners will enable asynchronous development while being driven by the projects common targets: demos.
We currently establish the following bounded contexts, and their respective owners:
Anything that comes out of the scope of each owner will be discussed with the maintainer committee who has a role of sanity check for Amaru:
The decision making on the Amaru project function with a simple rule: "if you can decide, do it"
The project is structured in a way that allows each bounded context to have freedom in its decision making within the boundaries of its scope. The only topics where decisions have to be addressed with the maintainers committee are:
Today this alignment is a recurring Maintainer Committee meeting every two weeks. Its purpose is to align the key decisions to be made regarding architecture and alignment of all the ongoing streams of activity.
The way we reach a decision by default is by lazy consensus meaning that once something is discussed, explained and an agreement is reached during the meeting mentioned above: it is accepted as a decision if no objections are made. For any objections regarding decision making the final approval will have to be settled with our main architect: Matthias Benkort.
Each scope owner will have total responsibility of its allocated budget withdrawal based on his FTE estimate. This will be executed with a multi signature contract on chain. Everything that goes out of the boundaries of the allocated budget will have to be decided by the maintainer committee.
In order to be fully transparent on how we plan to manage decision making and finance on the project here is what we will put in place on day 1 when we make the info action related to this proposal.
Based on this proposal deep dives, each scope owner will have access to a Threshold that he can withdraw money from, each scope has only 1 owner and only 1 threshold (valued in $)
We want the decision making to be very simple and straightforward: every scope owner must be in agreement when the withdrawal is made
We want to have all the information of the transaction at the same place so that it's easier to understand why the decision has been made and what's the extent of it. We will include in all vote an intent and a document that states the commitment of the owner to a specific delivery that goes in line with the roadmap of the whole project.
As mentioned the process should be straight forward and everything has to be available on-chain:
The current features related to the finance management on the project are:
Tip
12 months after the treasury withdrawal what's left within the contingency account will be automatically transferred back to the Cardano Treasury.
We believe that if we need the contingency to carry over then we need another proposal to be discussed linked with deliveries.
We will track the status of the budget status of each scope and of the overall project on a monthly basis.
We want to make the system to manage the finance of the project to be using a full consensus for decision making, that implies that a few safeguards must be put in place to make the system resilient.
First safeguard: what happens in case of someone losing access or adversarial behaviour from one of the scope owners. This will be managed by a simple mechanism that triggers after 3 consecutives "no" votes from one of the party. If these 3 votes happen then the other bounded context owners will have the possibility to diminish the decision making threshold for voting to 50% instead of 100% to reach a decision.
Second safeguard: securing the deliveries on the projects linked to the money withdrawal. We want to have a very straightforward method when it comes to managing milestones and deliveries: use Github Pull Requests to formalise the final delivery. The acceptance process of the deliveries will be using our day to day regimen:
This means that the withdrawal will be done with a basic rule on our project: 30% of the sum required will be withdrawn directly and the rest will be allocated to the forecast of milestones where the code is pushed to the repository.
Third safeguard: not delivering upon the requested targets. If the maintainers of the project deem the work not up to what the project needs 3 times in a row then the money initially asked in the withdrawal will be sent back for the scope owner to manage. This will be done using the maintainer committee or during specific deliverable reviews.
Fourth safeguard: delivering the money to the contractors/people executing the activities. The people in charge of delivering the activity for Amaru will have to specify a wallet address in order to receive the money from the withdrawal. The wallet information will be kept private and only the transaction will be visible to the public.
What's left to be clarified (before the official info action) is the way we make the on-chain activities related to the withdrawal of funds. So far our assumption is to use a multi sig scheme with off chain commitments, but stay tuned something else might come up!
PRAGMA is a member-based, not-for-profit open-source association for blockchain software projects created by 5 companies: Blink labs, Cardano Foundation, dcSparks, Sundae Labs, Txpipe.
PRAGMA is composed of two entities: the General assembly and the Administrative board.
The General assembly is composed of a representative of each founding member and decides the strategy and the composition of PRAGMA.
The Administrative board is elected by the General assembly, manages the operational side of PRAGMA and oversees each of the project.
PRAGMA's Administrative board has the responsibility of aligning with each of the projects that are part of PRAGMA the composition of the maintainers and reviews every quarter the progress of each project.
The content of these reports are straightforward and include:
This recurrent interaction will provide an overview of the project with a long term perspective and support the maintainers committee on aligning priorities and drawing out next steps.
The outcome of these reviews will be publicly available as documentation in the Amaru Github repository.
Everything that happens when planning and discussing future implementation has to be demo driven by our product: Amaru. We want to have an approach to always put into perspective the outcome of what we are trying to do. Every goals and milestones that we want to deliver has to be linked to something that can be run in an integrated demo.
As a result of this mindset, each bounded context owner has to integrate the deliveries of his scope into a demo for Amaru and align with the maintainer committee timing, content and the extent of the features required.
The achieved demos for Amaru so far are:
The demos that are currently forecasted are:
This section of the proposal will cover everything that has been planned so far related to the vision and objectives we set for our project.
Each scope will be described with the following pattern:
The following summarizes the list of bounded contexts that will be detailed in the document.
Note that since Dolos and the GO Node are not directly implemented in Amaru we will only manage the interfaces through the ledger and the networking stacks (P2P).
Assumption for this deep dive:
The scope of this bounded context is to implement and maintain a ledger compatible with Cardano. This includes:
Rust developers: 2.5 FTE
Rust developers: 1 FTE (Matthias 0.5) (Matthieu 0.5)
Rust developers: 1.5 FTE
The scope of this bounded context is to implement and maintain software implementing the Ouroboros family of blockchain consensus protocols. This includes Ouroboros Praos, the ongoing incarnation, and all future extensions like Genesis, Peras, Leios… The core requirements of the consensus are:
We give a rough (with a 3 months granualarity) timeline of the main deliverables for the Amaru project below. Note that dependencies are only needed to demonstrate the deliverable runs on a full Cardano network.
Rust developer: 2.5 FTEs
Rust developers: 1 FTE (Arnaud 0.5) (Pawel 0.5)
Rust developers: 1.5 FTE
The scope of this bounded context is to create a testing environment for Amaru and maintain the infrastructure required to run it. This includes:
Thresholds targets to test the performance of Amaru:
Rust developer/infrastructure operator : 0.5 FTE Infrastructure cost for a year with 10 nodes running: 60k$ Based on the estimate of running a Cardano node (permanent hardware, network, storage): 500$/node/month
None
Rust developer/infrastructure operator : 0.5 FTE
Infrastructure cost: 60k$
The scope of this bounded context is to implement and maintain a mempool compatible with Cardano. This includes:
Rust developers: 0.5 FTE
0 FTE
0.5 FTE
The scope of this bounded context is to implement and maintain a UTXO RPC service compatible with Cardano. This includes:
Rust developers: 0.5 FTE
0 FTE but work already done: Sundae Labs: Amaru Node Development Support
Rust developers: 0.5 FTE
This scope is covered by a Catalyst proposal that is a lot more detailed than the content of this document, you can check it here: Amaru: P2P networking component by TxPipe
The scope of this bounded context is to implement and maintain a peer to peer networking layer compatible with Cardano. This includes:
Rust developers: 0 FTE
Rust developers: 0 FTE but work already done: Amaru: P2P networking component by TxPipe
Rust developers: 0 FTE
This section describes the expected rigorous development expectations that comes with delivering software on the project and the activities that aren't specific to a bounded context.
Each bounded context has to deliver an implementable version of his scope for Amaru. This means that the following has been achieve:
Expectations regarding each bounded context are:
The main responsibilities of managing a bounded context comes with aligning forecasts between multiple teams, securing commitments from contributors all while taking into account risks and managing contingencies that can help delivering. This will also be a significant workload for each scope owners and the maintainers committee of the project.
Delivering an implemented software comes naturally to senior developers, although we want our project to be up to par with the state of the art regarding the Cardano ecosystem.
Expectations regarding each bounded context are:
The current set of activities that are in that spectrum are:
Each bounded context will share ownership over a product/project manager that will interface himself with all the stakeholders of the Amaru project to facilitate the management activities and harmonize the ways of working around the bounded context.
Part of our journey will involve making our node modular and welcome many different use cases. We intent that each scope owner has a responsibility towards making evolutions towards fulfilling these use cases.
We are aware that bringing more implementations and various use cases will come with a higher number of bugs and troubleshooting tasks towards making sure Amaru runs smoothly with a high performance.
Given the mentionned above activities and a set of uncertainty regarding the overall scope of the project after Q4 2025 the owners decided to allocate 2 FTE to a bounded context called "Ad-hoc Mercenaries".
The purpose of that team is to be a lean surgical team that can help any bounded context in delivering actionnable results. They will function as a straighforward "help us deliver this" and can be sollicitated by any bounded context owner.
For the time being, the owner of that bounded context will be Pi Lanningham.
The proposal submitted will be targeting: $1.7M as a result of the scopes covered in Amaru, as summarized in Estimates and contributions.
The Amaru project represents an opportunity to bring node diversity through the development of a modular, high-performance, and interoperable block-producing node for enhancing the Cardano ecosystem. Our approach, rooted in openness, innovation, and operational resilience, aims to deliver significant advancements in blockchain technology without compromising security or operator experience.
Through rigorous design and execution phases, we have outlined actionable scopes, realistic timelines, and comprehensive resource allocations to achieve our ambitious goals by the end of 2025. The detailed breakdown of scopes, funding and resources already secured reflects our commitment to transparency and efficiency. While we remain optimistic about our forecasts, we acknowledge the complexities involved and have incorporated contingencies to address unforeseen challenges.
The requested treasury funding of $1.7M will empower us to build on the foundational work started, enabling us to transition from vision to reality. We firmly believe that the exceptional talent and dedication of our team, combined with the robust framework, will ensure the project's success.
This proposal is more than just a funding request; it is an invitation to collaborate and innovate together. The Amaru project is ambitious, but it is also achievable with the collective effort of our contributors and the broader Cardano community. By focusing on building, learning, and demonstrating tangible progress, we are confident that Amaru will pave the way for a more resilient and decentralized Cardano ecosystem, ensuring long-term reliability and innovation.
Let’s build the future of Cardano together.