Skip to content

Conversation

@robinbryce
Copy link
Contributor

No description provided.

…statement

DEMONSTRATION CODE NOT PRODUCTION SAFE

Given a local replica of any datatrails log (production or otherwise):

- verify the locally replicated log state
- generate an mmr leaf value using the first 24 bytes of the sha256 of
  the signed statement as the trie index extrabytes, and an idTimestamp
  representing the current time, and the raw bytes of the statement as
  the leaf content to be hashed.
- add the leaf value to the in memory copy of the ledger tile (massif)
- generate a consistency proof form the old, verified, state to the
  newly created state.
- sign using an ephemeral ecdsa private key (or one providded on the cli)
- write out the new (forked) ledger state:
  1. receipt-{mmrIndex}.cbor - the scitt signed statement for the MMR draft ledger
  2. checkpoint-{oldSize}-{newSize}.cbor - the signed checkpoint (from
     which self service receipts can be produced *without* the ephemeral
     private key)
  3. fork-{oldSize}-{newSize}.bin the MMR draft leger tile data with the
     newly appended leaf.
  4. the ephemeral private key in .cbor and .pem format (only if generated)
  5. the ephemeral public key in .cbor and .pem format (only if generated)

Note: only minimal testing has been performed at this point.
Updates veracity CLI to use the new ObjectReader/Writer storage interface
from go-datatrails-merklelog and consolidates DataTrails event processing
through go-merklelog-datatrails. This change significantly simplifies
the codebase while maintaining full CLI functionality.

Key changes:
- Adopts ObjectReader interface for all storage operations (Azure, FS)
- Uses functional API: GetMassifContext(), GetMassifHeadContext(), etc.
- Replaces app/ package with go-merklelog-datatrails/appdata
- Unified readerSelector interface across all commands
- Simplified massif store configuration and initialization
- Updated all commands: verify-included, node, receipt, replicate-logs

Removed functionality:
- Local app/ package for event processing (moved to shared library)
- Complex storage provider abstractions
- Legacy test infrastructure and contexts

Code reduction: ~1,258 lines removed, ~327 lines added

The CLI now provides the same functionality with a dramatically
simplified codebase built on the new minimal storage interfaces.

feat: remove hard azure blobs storage dependency
feat: remove direct dependencies on logverification, serialization and simplehash in favour of one go-merklelog-datatrails package
feat: explicit options for working with single massif and checkpoint files
test: fix & renable the binary tests
test: disable all tests dependent on datatrails services which have terminated
@robinbryce robinbryce closed this Oct 5, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant