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

iotaledger / iota / 18148376031 / 1
63%
develop: 63%

Build:
DEFAULT BRANCH: develop
Ran 01 Oct 2025 04:06AM UTC
Files 1432
Run time 48s
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

30 Sep 2025 01:18PM UTC coverage: 65.772% (+0.02%) from 65.751%
18148376031.1

push

github

web-flow
feat(Starfish): send Merkle root as transaction commitment (#8663)

# Description of change

This PR changes transaction commitment to Merkle root of encoded
transactions.

More precisely, the transaction data of the proposed block is serialised
and broken into info_length shards (info_length = f + 1 for n = 3f + 1).
Then these shards are encoded into n shards (n - number of validators).
After that, a Merkle tree with n leaves is built, and each leaf is a
hash of a shard. The root of this tree is transaction commitment.

To achieve that, the following changes have been introduced:
1. One encoder is added to the core. It is used to compute transaction
commitment to include in the block header of the created block.
2. n encoders are created during the subscription process, one encoder
for each connection. These encoders are used to verify the transaction
commitment of the blocks received through streaming.
3. Encoders are also created in the transaction synchronizer to verify
the transaction data received through this path as well.
4. Computation of transaction commitment was removed from the function
that reads transactions from the database. Instead, we read transaction
commitments from the corresponding headers. It may be later optimised
by, for example, storing commitments separately or together with
transactions.
5. Any struct that implements the trait ShardEncoder can be used. At the
moment, the trait is implemented for ReedSolomonEncoder and
TrivialEncoder. TrivialEncoder doesn't actually do anything; it returns
the same vector of shards as it is given. It is used for small
committees of size < 4, since ReedSolomonEncoder doesn't work for
info_length=n.

## Links to any relevant issues

`fixes #8649 `.

## How the change has been tested

- [x] Basic tests (linting, compilation, formatting, unit/integration
tests)
- [ ] Patch-specific tests (correctness, functionality coverage)
- [ ] I have added tests that prove my fix is effective or that my
fea... (continued)

230324 of 350184 relevant lines covered (65.77%)

2383772.66 hits per line

Source Files on job nextest+simtest - 18148376031.1
  • Tree
  • List 1432
  • Changed 64
  • Source Changed 14
  • Coverage Changed 63
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Build 18148376031
  • da98d81e on github
  • Prev Job for on develop (#18115747496.1)
  • Next Job for on develop (#18237655678.1)
  • Delete
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