• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

tari-project / tari / 26450381733
61%

Build:
DEFAULT BRANCH: development
Ran 26 May 2026 02:12PM UTC
Jobs 1
Files 702
Run time 2min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

26 May 2026 01:18PM UTC coverage: 61.543% (-0.009%) from 61.552%
26450381733

push

github

web-flow
feat(sidechain)!: carry next-epoch hash in EndEpoch command (#7856)

## Description

Adds `EndEpochAtom { next_epoch_hash }` and changes `Command::EndEpoch`
to `Command::EndEpoch(EndEpochAtom)`.

The next epoch's base-layer boundary-block hash is now carried inside
the `EndEpoch` command, so it becomes part of the block's command merkle
root and is attested by the quorum that commits the end-of-epoch block.

## Motivation

Today each validator derives the next epoch's boundary hash from its own
base-layer oracle and locks it unilaterally when it stamps the next
epoch's genesis. When a base-layer reorg deeper than the confirmation
depth straddles an epoch boundary, the committee can split across two
different boundary-block hashes, after which nodes reject each other's
proposals (`InvalidEpochHash`) and consensus wedges with no automatic
recovery.

Carrying the hash in the command lets the committee **ratify the next
epoch's hash by quorum** instead: a validator only votes for the EOE
block if `next_epoch_hash` matches its own (lagged, reorg-stable) view,
so a hash can no longer be locked without agreement. The layer-2
consensus changes that consume this live in the tari-ootle repo.

## Notes

- The command still hashes via `command_hasher().chain(self)` (Borsh),
keeping the layer-2 command hash consistent with the consensus block's
command merkle root. The matching tari-ootle `Command` change preserves
byte-identical hashing so L1 inclusion-proof verification is unaffected.
- `EndEpoch` stays the last enum variant (Borsh index unchanged).

## How Has This Been Tested?

`cargo build` and `cargo test` for `tari_sidechain` pass.

0 of 15 new or added lines in 1 file covered. (0.0%)

7 existing lines in 4 files now uncovered.

72082 of 117125 relevant lines covered (61.54%)

223201.58 hits per line

Uncovered Changes

Lines Coverage ∆ File
15
12.5
-20.83% base_layer/sidechain/src/command.rs

Coverage Regressions

Lines Coverage ∆ File
3
67.76
-1.4% comms/core/src/protocol/messaging/protocol.rs
2
83.12
-0.32% comms/core/src/protocol/rpc/client/mod.rs
1
90.56
-0.29% comms/core/src/multiplexing/yamux.rs
1
59.48
-0.19% comms/dht/src/connectivity/mod.rs
Jobs
ID Job ID Ran Files Coverage
1 26450381733.1 26 May 2026 02:12PM UTC 702
61.54
GitHub Action Run
Source Files on build 26450381733
  • Tree
  • List 702
  • Changed 8
  • Source Changed 1
  • Coverage Changed 8
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #26450381733
  • 941dd859 on github
  • Prev Build on development (#26400481581)
  • Next Build on development (#26456753770)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc