Roadmap

Planned
7 minutes ago

Local transaction is not being diffused, despite peers asking?

### What revision are you using?

In Progress
39 minutes ago

Cleanup + Enforce invariants in RewardAccount

We've inherited a lot of strange type decisions from Pallas, and didn't clean some of them up when we migrated to our own type system.

In Progress
about 1 hour ago

fix(amaru-protocols): preserve bytes of transactions flowing through the mempool.

In Progress
about 1 hour ago

fix(amaru-ledger): do not re-encode locally submitted transactions to compute their size

<!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit

Shipped
about 2 hours ago

fix: fix the parenting of spans after block validation

Skip-Changelog

In Progress
about 2 hours ago

test: containerized demo

This PR simplifies the `relay-1` demo:

Shipped
about 2 hours ago

log address_watch with ansi colors

disclaimer: I am not a designer, my color choices are terrible by definition

Planned
about 3 hours ago

ensure emitted trace conform to emitted schema

Currently, the schema declared in `amaru-observability` only specifies which type of value we put into the macro at the call site, it doesn’t specify which type will appear in the JSON / CBOR / whatever. I think we should regulate both, which means removing the choice at the call site and defining the rendering within the schema definition instead. Then we are in a position to emit the actual JSON schema.

Planned
about 3 hours ago

check block/header integrity when loading from disk

We use content-addressed types, so we need to make sure that we return the requested content.

In Progress
about 4 hours ago

align conformance fixtures on canonical snake_case

Closes #1192. Following KtorZ's guidance, this removes the proxy types and the HasProxy machinery from amaru-kernel, moves JSON parsing directly onto the types themselves, and switches all 242 test fixtures plus the schema, and Haskell harness to snake_case matching the format the rest of the codebase already uses everything is verified locally all conformance tests pass with the exact same counts as before, make all-ci-checks runs fully green, and the updated Haskell harness passes the full sweep, 240/240 scenarios validate correctly against the reference ledger. Per review feedback: the chan…

In Progress
about 4 hours ago

Fix Disjoint Inputs Check(s)

In pv11+, the reference inputs and the inputs do *not* need to be disjoint sets. That being said, script executions in PlutusV3 must have disjoint sets regardless of the protocol version.

Shipped
about 7 hours ago

Release workflow adjustments

<!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit

Shipped
about 8 hours ago

Fix the Min UTxO Value Calculation

Our min UTxO value calculation was incorrectly missing the constant of `160` that is added to the size of the UTxO. This was not caught anywhere since fixture 49 set `coins_per_utxo_byte` to 100 billion.

Planned
about 9 hours ago

check quality of peers shared by peer_sharing

Markus found the following when looking at the peers shared by Amaru:

Planned
about 9 hours ago

refine `Peer` / `PeerCandidate` types and implement SRV record support

Consensus protocol version 15 differs from our currently implemented v14 only in advertising the ability to use SRV records in peer discovery. Properly implementing this should first clean up the internal terminology so that we will arrive at the following state:

Planned
about 9 hours ago

ensure correct display of dissemination metrics in TUI

Markus saw this when testing the first release: <img width="516" height="85" alt="Image" src="https://github.com/user-attachments/assets/d3a10a49-dca2-47b3-b3b5-4c537cd53b8c" /> The fetch times likely include fetch wait state, which should be shown separately. We also need to make sure that attribution to peers is adequate; in case of the “adopt” column this will need to be properly defined and documented as the easily accessible metric in this case only pertains to the local node (block adoption would be signaled in chainsync as well, but that happens only when the next header or rollback nee…

Planned
about 9 hours ago

Add rust docs to TraceContext

As a way to solidify my understanding and softening the learning curve of future devs, the interplay between `tracing`, `opentelemetry` and serialization/deserialization (esp. with the `TraceBuffer`) should be spelt out.

Planned
about 9 hours ago

Correct usage of NAME in tracing EDR

Names are only for tracing events, not for naming spans.

Planned
about 9 hours ago

Persist findings of consensus behaviour in Cardano blueprints

As discussed in Porto last week, any gaps found in the Ouroboros network spec shall eventually be filled with information on https://github.com/cardano-scaling/cardano-blueprint. This ticket serves as a reminder to myself that I should start with the notes taken in Porto from very fruitful discussions with Marcin M.

Planned
about 17 hours ago

Cleanup serde-json Proxy instances

### Abstract

Shipped
about 20 hours ago

Update packages metadata for v10.11.20260820

Updates packages metadata generated from the published release [`v10.11.20260820`](https://github.com/pragma-org/amaru/releases/tag/v10.11.20260820).

Shipped
about 21 hours ago

fix(amaru-bootstrap): resolve recently unregistered accounts from previous rocksdb snapshots.

The Mark snapshot from the Haskell's epoch state is no good, it does not contain accounts which did not receive rewards but that may receive some in the following epoch.

Shipped
about 22 hours ago

fix: amaru binary fails to create snapshot

Make sure amaru doesn't rely on build time constant. Improve error messages when directory can't be written to.

Shipped
about 23 hours ago

Decode transaction inputs to a set

After pv9, the Haskell node rejects duplicate entries, instead of silently dropping them. We have been *allowing* duplicate entries.

Shipped
about 24 hours ago

Don't fail when snapshots directory doesn't exist

If you run bootstrap without a pre-existing snapshots directory, it will fail. It shouldn't, since the process will download snapshots. This PR means we ignore a `NotFound` error, restoring the expected behavior.

In Progress
1 day ago

VRF Key Uniqueness Validation - Take 2

Shipped
1 day ago

feat: log the eviction reason for evicted mempool transactions

This PR adds log events when transactions are evicted to the mempool. Those events are useful to understand if a transaction was evicted because it was part of the last applied block or if it became invalid for another reason.

In Progress
1 day ago

VRF Key Hash Validations

Close #910

Shipped
1 day ago

chore: reduce traces noise around transaction validation: emit a single trace per phase-one, and phase-two.

<!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit

Shipped
1 day ago

chore: detect local snapshots for bootstrap when they exists.

Shipped
2 days ago

chore: leaner bootstrap

Various improvements to speedup bootstrap and reduce memory usage: * better tx usage when loading utxos * more efficient map decoding * stream node state snapshots

Shipped
2 days ago

fix: normalize types around conn_id / peer + ensure various simple types are traced as strings

This commit also introduce better parsing for the tracing macros, so that %,@,? and full expressions can be used for span and event fields.

Shipped
2 days ago

feat: make sure CI runs snapshots tests too

<!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit

Shipped
2 days ago

fix amaru-node Telemetry tracing stack for structured logging

<!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit

Planned
2 days ago

Flat-decoding optimizations

## Abstract

Shipped
2 days ago

chore: publish a few new recent epoch-stake-distribution snapshots for mainnet + fix Makefile.

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->

Shipped
2 days ago

feat: focus on the info tab when the tui starts up

Skip-Changelog

Shipped
2 days ago

Fix committee acknowledgment to NOT modify the final/resulting state

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->

Shipped
2 days ago

fix(amaru-ledger): reduce peak allocation during stake distribution calculation

Elements are already *mostly* ordered and we can rotate vectors in place and reduce unnecessary allocations.

Planned
3 days ago

Sporadic unit test failure

### What revision are you using?

Shipped
3 days ago

fix: decode bytes with indefinite length only in protocol version 12

This PR mostly fixes the decoding of bytes so that Conway data only accepts definite-length encoded bytes:

Shipped
3 days ago

fix: switch to fork on the ledger only with a better tip

This fix is an addition to #1190. That previous PR was assuming that the `fetch_blocks` stage was sending only the tip of a given branch to the `validate_block` stage. This made it safe to call `switch_to_fork` at the ledger level since the ledger only expects a fork that has the same length or one more block than the current chain.

Shipped
3 days ago

pure-stage contramap no longer leaks memory

The transformation function is no longer registered under its name, meaning that contramap can be used without worrying about memory leaks. This also is one more reason why resuming a simulation from a replay won’t work (since the mapped StageRef will not be rehydrated with the transformation function), but that was already broken earlier (for `.call`) and is not currently a design goal.

Shipped
4 days ago

add pure-stage tracking of external effect time

This is a foundational step towards building the much more powerful amaru-sim we aspire to (EDR-011).

Shipped
4 days ago

Implement DisallowedVoters logic

Closes #927

Shipped
4 days ago

fold BlockHeight into Point and remove Tip

- **fold Tip into Point**, network layer and other external interfaces (like mithril) use NetworkPoint for the `slot.hash` format - **switch chain store to Point where beneficial** - **bump chain store to v6 and add migrations**

Shipped
4 days ago

Fix CC members preparations

Two fixes; the first one was causing a sync issue on Mainnet epoch 602 due to the preparation step failing to correctly resolve the volatile hot delegation of a newly added member.

Shipped
5 days ago

feat: support run-until-then-test with # of epochs

Drop make run-until and use `run-until-then-test` for CI so that snapshot tests are performed there too. `run-until-then-test` is also improved so that it can be launched with just a number of epoch to test. Starting epoch is then inferred from local dbs.

Shipped
6 days ago

CommitteeUnknown + CommitteeHasPreviouslyResigned

Closes #920 and #921

Shipped
6 days ago

Update Haskell Harness

Many tests were failing the Haskell evaluation because of drift. This PR fixes *almost* all the failing cases, except for `00044`, which is fixed in #1138.

Planned
6 days ago

Optimize reward payouts using RocksDB merge operators

### Abstract

Shipped
6 days ago

Reduce stake distribution / rewards churn allocation

These little changes have noticeable effects on the transient allocations and pointless work that is done creating temporary structures; the reward calculation and stake distribution are significantly faster:

Shipped
6 days ago

chore: unify BlockHeader and Header

The main motivation for this is not only the code cleanup that comes with it, but also an attempt at getting rid of the constant re-serialisation of headers for hash computation. This is not only inefficient but also potentially wrong should the header be constructed using a non 'canonical' cbor. The `recompute_hash` function was identified as one of the main culprit using DHat; and instead of patching over it I thought we might as well kill two birds on stone and unify these two types and take the opportunity to memoized the hash during decode; entirely avoiding the need for `recompute_h…

Shipped
7 days ago

fix: cost models encoding + value size calculation

I found those 2 issues while synchronizing with `preprod`.

Shipped
7 days ago

fix: lift restrictive assertion on the fork length when switching to a fork

Fixes https://github.com/pragma-org/amaru/issues/1162.

Planned
7 days ago

Ledger predicate: VRFKeyHashAlreadyRegistered

### Abstract

Shipped
7 days ago

chore: add a clippy rule for using decode_bytes

This PR adds a lint to clippy in order to warn for the use of `d.bytes()` when decoding bytes that can potentially accept definite and indefinite length bytes.

Shipped
7 days ago

fix(amaru-tui): reported blocks and transactions throughput

<!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit

Shipped
7 days ago

fix(amaru-pure-stage): avoid unnecessary string allocation in pure-stage's try_cast and cast_ref

This commits does two things really:

Shipped
7 days ago

restore and unify spans in traces/logs

fixes #1208

Shipped
7 days ago

Tweak jemalloc configuration

This magic line is the result of multiple benchmarks evaluating different configurations for isolated mainnet runs over 10 epochs. This gives a good balance between allocation time and memory management overall:

Planned
7 days ago

refactor: move `any_` functions as `Arbitrary` proptest! instance

### Abstract

Shipped
8 days ago

Implement InvalidGuardrailsScriptHash

Closes #931

Shipped
8 days ago

Run phase two validations in ledger conformance tests

Closes #894

Shipped
8 days ago

Fix Haskell Conformance Test Runner

During work on #1138, I discovered that the Haskell test runner doesn't actually work anymore, after recent changes to the fixture structure.

Shipped
8 days ago

test: fix the serialization conformance tests gaps

This PR fixes the conformance gaps tracked by the `test_cbor_serialization` test.

Shipped
8 days ago

Introduce GovActionsDoNotExist Logic

Closes #924.

Shipped
8 days ago

feat: trace the tx-submission exchange with schema-validated events

This PR adds a few events to help us debug the behavior of the txsubmission protocol.

Shipped
9 days ago

rebuild only when needed, demote noisy log

- ledger DB directories were triggering rebuilds of `amaru`, which I don’t think is useful -- please correct me if wrong - peer snapshot download metadata was triggering rebuilds of `amaru-node`, which was incorrect (moved that file to $out_dir) - printing span close for every single gov prop at INFO level seems inappropriate to me, the aggregate count is still there and I’ve seen INFO log when a gov prop is opened

Shipped
9 days ago

Introduce UnelectedCommitteeVoters logic

Closes #922

Shipped
9 days ago

remove compare-traces and warn about DEBUG logging in CI

fixes #1201

Shipped
9 days ago

taking a stab at structured logging

There is already quite some structured logging that we can do, with the notable exception of emitting structured attributes (`AnyValue`) in OTLP spans--here the `opentelemetry` crate is not yet far enough.

Shipped
9 days ago

push forwarded embedded Amaru

This is an experiment in advancing the embedding of Amaru as a library. Certainly not yet perfect, but the potential is demonstrated.

Shipped
9 days ago

fix handling of already validated blocks in select_chain

This followed from a discussion on #1124, it was easier to create the code as a basis for discussion than to describe it in English in detail.

Shipped
9 days ago

rewrite define_schemas parsing so that GoToDefinition works

I think syn parsing is more robust than rolling our own, and it has the advantage of keeping source spans so that GoToDefinition or FindUsages are now working.

Planned
9 days ago

Disentangle ledger store

### Abstract

Shipped
10 days ago

fix: use local amaru with gliveview

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->

Shipped
10 days ago

Fixture cleanup

This PR cleans up fixtures which had multiple failure cases. We avoid those, so that implementations that may run validations in a different order can still use our fixtures.

Shipped
10 days ago

chore: fix nightly tools check

<!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit

Shipped
10 days ago

add peer_mix configuration

fixes #1180

Shipped
10 days ago

add peer sharing responder and wire it up

fixes #1169

Shipped
10 days ago

add peer sharing protocol and initiator

fixes #1168

Shipped
10 days ago

add collection of information needed for peer sharing

fixes #1167

Planned
11 days ago

amaru snapshot create fails with "Permission denied (os error 13)" when no --dist-dir and --snapshot-dir is given

### What revision are you using?

Shipped
11 days ago

feat: add SPO Interviews and Milestone Onboarding

This PR contains the documents for **Milestone1 : Onboarding tasks and general knowledge about Cardano (July)** as part of the Amaru projetct : _Operations & Use Cases: Devops and SPO relationship_

Shipped
13 days ago

Introduce InvalidPrevGovActionId logic and fixtures

Closes #932

Shipped
14 days ago

fix: move alias resolution to runtime + avoid git dependencies in build.rs

We resolve the aliases at build time so that we can dump them for trace schema validation in the dump-traces-schema. However, this command is really just a dev util called in CI or locally, where we have the repository context available anyway. So instead of making the build.rs needlessly more complexe here, intoducing built-time

Planned
14 days ago

Fix the decoding FIXMEs

### Abstract

Planned
14 days ago

Test and report the code coverage for CBOR decoding tests

### Abstract

Planned
14 days ago

Check the conformance of cbor encoding with the Haskell node

### Abstract

Planned
14 days ago

Check the conformance of flat decoding

### Abstract

Planned
14 days ago

TUI: clarify when tui mode shall exit and how

Currently, `amaru node run` may open the TUI and immediately close it, leaving nothing on the console.

Shipped
14 days ago

fix: cleanup metrics and observability setup and communication with the TUI

<!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit

Shipped
15 days ago

tiny fix for “please migrate DB” message

Alternative solution to making `amaru dev migrate` part of the public CLI surface.

Shipped
15 days ago

fix: successfully validate lists of BLS values if empty

On `preprod` a transaction contains the following script: ``` (con (list bls12_381_G1_element) [])) ```

Planned
16 days ago

Performance: define `CompactSet` & `CompactMap` for small b-tree structures

### Abstract

Planned
18 days ago

Move ledger to separate thread

All ledger operations are single-threaded and must be executed sequentially, while operations may be requested from separate entities (block validation, mempool, possible future cases like Leios integration). This matches the well-known Actor model, implemented using a dedicated thread that pulls requests from an mpsc channel and sends responses to oneshot channels that may be embedded in the work item messages as needed.

Planned
24 days ago

Automatic release process for crates

In preparation for a release of the `amaru` crate on crates.io we need to install the following mechanisms:

Planned
about 1 month ago

Correct behavior around invalid phase two transactions

Currently, Amaru runs all validation rules when a transaction has `is_valid: false`. This is a divergence from the Haskell implementation, where only the `UTXOW` state transition rule runs (which includes the `UTXO and UTXOS` rules). The `UTXOS` rule branches on `isValid`. The state update is also different, only the UTxO state changes are persisted (and here, it is the collateral spend and return only).

Planned
about 2 months ago

Bootstrap should fill db with blocks

### Abstract

Planned
2 months ago

Optimize startup time edge case

### Abstract

Planned
2 months ago

Cardano Node Diversity platform

### Abstract

Planned
2 months ago

Optimize the download of transactions in the txsubmission protocol across several peers

### Abstract

Planned
2 months ago

Support chained transactions in the mempool

### Abstract

Planned
2 months ago

Do not revalidate transactions that are already in the Mempool

### Abstract

Planned
2 months ago

Consider memory + cpu execution units when computing the available mempool capacity

### Abstract

Planned
2 months ago

Perform integrity/sanity check of the ledger & chain db

### Abstract

Planned
2 months ago

Properly compute the handshake negotiation result

### Abstract

Planned
2 months ago

Identify and close existing ledger coverage gaps

### Abstract

Planned
2 months ago

Monitor RocksDB metrics

### Abstract

Planned
3 months ago

Update the animations for the simulation

### Abstract

Planned
3 months ago

Add ledger checks to the simulation

### Abstract

Planned
3 months ago

Add the txsubmission protocol to the simulation

### Abstract

Planned
3 months ago

Complete implementation of `ExtraneousScriptWitnesses` ledger rule

### What revision are you using?

Planned
3 months ago

Epoch Transition Benchmark

### Abstract

Planned
3 months ago

Granular Ledger Benchmarks

### Abstract

Planned
3 months ago

Global Ledger Benchmarks

### Abstract

Planned
3 months ago

Enable the TraceBuffer in production

### Abstract

Planned
3 months ago

Use a separate column family for `BEST_CHAIN_PREFIX`

### Abstract

Planned
3 months ago

Add simulation tests for various network issues

### Abstract

Planned
3 months ago

implement initiatorOnlyMode=false on outgoing connections

### Abstract

Planned
3 months ago

Properly handle in/out/duplex peers

### Abstract

Planned
3 months ago

Promote downstream connections to initiator mode on incoming connections (warm -> hot peer transition)

### Abstract

Planned
3 months ago

fix amaru-sim test termination

### Abstract

Planned
10 months ago

Publish on brew

Planned
10 months ago

Add bench capacities

Add a new `bench` subcommands allowing to provide metrics about current hosts. Those should be relevant to `amaru` e.g.

Planned
10 months ago

Allow to browse static JSON

`amaru` can output JSON traces. Allow to open them and display details.

Planned
11 months ago

Allow to browse metrics

OpenTelemetry offers metrics primitives. Create a new screen allowing to see at a glimpse the most important ones exposed by amaru. It should leverage ratatui primitives to display metrics.

Planned
12 months ago

Visualise current network connections state

Showing the state of incoming/outgoing (or initiator/responder as mini protocols' terminology has it) would be useful to troubleshoot a node's state. In particular, we'll need to be able to trigger disconnections of "faulty" nodes so while we'll obviously trace that, visualising the links from/to a node would be nice.

Planned
about 1 year ago

Publish on crates.io

Will allow use of https://github.com/cargo-bins/cargo-binstall

Planned
about 1 year ago

Add static querying capacities

`amaru` should offer static querying capacities e.g. access db details

Planned
about 1 year ago

Allow to search DReps by ids

Planned
about 1 year ago

Add VIM keybindings for navigation

Make sure VIM like keybindings are added on top of regular keybindings for navigation between various panels.

Planned
about 1 year ago

Add a main screen showing off instances details

Could take inspiration from https://github.com/blinklabs-io/nview

Planned
about 1 year ago

Publish on crates

This is currently blocked by amaru not being published on crates

Planned
about 1 year ago

Introduce indexing

Searching entities by most key requires full scan. Introduce a local index mechanism to speed things up.

Planned
about 1 year ago

Allow to be used as a library

Make sure `amaru-doctor` can be used as a library in `amaru` directly.

Planned
about 1 year ago

Allow to browse resource deltas between two epochs

In Progress
3 months ago

fix: pad contingency registry_script.hash to 28 bytes

One-character JSON fix in `journal/2026/metadata.json`.

Planned
3 months ago

Add CAG off-ramp address to journal metadata

The journal `metadata.json` currently lists only scope_owners and the five treasury script anchors. Designated off-ramp / vendor-coordination addresses (per CAG MSA §1.7) live only in off-chain email and in per-tx on-chain rationale references[].

Community engagement

We build in public. Want to request something or upvote a feature? Join the conversation on: