Skip to content

Feature: Separate checkpoint publishing intervals for integrating vs periodic updates #675

@mhutchinson

Description

@mhutchinson

Log checkpoints are published on two triggers:

  • when the tree root is updated due to new entries being integrated
  • periodically

Currently, both of these are controlled via a single option: https://pkg.go.dev/github.com/transparency-dev/trillian-tessera#AppendOptions.WithCheckpointInterval

This options ensures that:

  • active logs (i.e. the tree frequently has new leaves integrated): checkpoints will be published no more frequently than this setting
  • passive logs (i.e. the tree is not being updated): checkpoints will periodically be published at this schedule

The net effect of this is that whether a log is active or passive, the log checkpoint will be re-published at the interval set. This is clear and has the benefits of a small control plane.

The main downside is that log operators are likely to tune this setting to be as small as they can get away with, in order that new additions to a log are available via a published checkpoint ASAP. A small setting for this means that for passive logs, there is surprise that checkpoints are updating frequently; this costs a minor amount to the log operator, but also puts a cost on the witness network.

Another proposal is:

Add another setting: WithCheckpointPeriodicInterval that controls the periodic part of it. The default setting for this should be in the order of an hour. We would leave the other setting at 10s. It would be an error to set the periodic setting to be less than the other interval (except to set it to 0, to disable periodic publishing).

Benefits:

  • passive logs are cheaper for the log operator and witnesses
  • purely test logs with no witnesses could disable the re-publishing
  • log verifiers (aka auditors/monitors) can still verify that checkpoints are recent

From the TrustFabric perspective, this is a low priority feature and we won't work on this without demand signal. This issue is raised to be a demand signal for people looking for a feature like this. Please upvote to prioritize.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions