transparency-dev / transparency-dev/distributor

Feature: Consider and document which log signature is propagated when checkpoints are combined

Open
#155 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Go
Stars
5
Forks
7
Avg merge
1d 18h
Merged PRs (30d)
6

Description

When creating a merged checkpoint, combine_signatures.go#Combine currently picks the first checkpoint as the basis to which the other witness signatures are added. This means that the log signature on this checkpoint will be the one on the merged checkpoint.

In the case where all witnesses have seen the same checkpoint but the log signature was different (which could be because of a non-deterministic signing algorithm, or because of something like the timestamps that are embedded in the Sunlight CT checkpoint signature scheme), this means that we are arbitrarily picking a log signature to "win". From a quick look at the implementation, this arbitrary choice appears to be the log signature seen by the witness with the lowest ID as sorted by SQL alphabetically.

This behaviour isn't wrong, but it could be surprising. We should review this code and decide if we want something more stable. Ideas are:

  • whichever checkpoint the distributor saw first
  • whichever checkpoint was witnessed by the witness with the smallest timestamp

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with combine_signatures.go#Combine and trace how the first checkpoint and witness signatures are selected. Compare the proposed propagation policies, decide which behavior should be supported, and document the decision. Done means the selection rule is explicit and any resulting implementation change is covered by the project’s relevant checks.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
distributed-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.