# google/trillian

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/google-trillian).**

3,736 stars · 449 forks · Go · Apache-2.0

## Links

- GitHub: https://github.com/google/trillian
- awesome-repositories: https://awesome-repositories.com/repository/google-trillian.md

## Topics

`certificate-transparency` `merkle-tree`

## Description

Trillian is a distributed, multi-tenant verifiable data store that maintains cryptographically verifiable logs and maps using Merkle tree structures. It functions as a scalable backend for transparency logs, providing a system where data integrity is ensured through append-only records and mathematical proofs of inclusion and consistency.

The system distinguishes itself by decoupling core storage from application-specific logic through a personality layer, which handles admission criteria and data canonicalization. It employs a consensus-based leader election mechanism for high availability and a gossip protocol to synchronize views and detect split-view attacks.

Beyond its core logging capabilities, the project provides a verifiable key-value store using sparse Merkle trees and supports persistence across various relational SQL database backends. The framework includes a comprehensive security suite for managing signing keys, rotating private keys, and enforcing request quotas and rate limits per tenant.

The system is implemented in Go and provides integration tests to verify that server binaries maintain the integrity of the verifiable data store.

## Tags

### Data & Databases

- [Verifiable Storage](https://awesome-repositories.com/f/data-databases/data-engineering-infrastructure/data-persistence-storage/data-storage/verifiable-storage.md) — Stores data in a cryptographically verifiable structure using Merkle trees to ensure transparency and integrity. ([source](https://github.com/google/trillian/blob/master/integration/log_integration_test.go))
- [Signed Root Distribution](https://awesome-repositories.com/f/data-databases/data-consistency-models/retrieval-consistency-verifications/merkle-root-verifications/signed-root-distribution.md) — Provides the latest signed root of the Merkle tree to establish the current state and size of the log. ([source](https://github.com/google/trillian/blob/master/trillian_log_api.proto))
- [Cryptographic Commit Logs](https://awesome-repositories.com/f/data-databases/distributed-commit-logs/cryptographic-commit-logs.md) — Creates append-only data stores using Merkle trees to ensure records cannot be altered or deleted without detection.
- [Append-Only Consistency Proofs](https://awesome-repositories.com/f/data-databases/distributed-commit-logs/cryptographic-commit-logs/append-only-consistency-proofs.md) — Creates cryptographic proofs demonstrating that a newer log version is an append-only extension of an older one. ([source](https://github.com/google/trillian/blob/master/CHANGELOG.md))
- [Distributed Consensus Stores](https://awesome-repositories.com/f/data-databases/distributed-consensus-stores.md) — Provides a high-availability data store using leader election and consensus to coordinate verifiable logs.
- [Log Tenant Isolation](https://awesome-repositories.com/f/data-databases/multi-tenant-data-management/log-tenant-isolation.md) — Isolates different data streams by identifier by hosting multiple independent Merkle trees for different tenants. ([source](https://github.com/google/trillian#readme))
- [Proof-Carrying Data Stores](https://awesome-repositories.com/f/data-databases/proof-carrying-data-stores.md) — Runs high-availability clusters providing cryptographic proofs of inclusion and consistency for large datasets.
- [Append-Only Log Feeds](https://awesome-repositories.com/f/data-databases/storage-abstraction/content-addressable-stores/append-only-log-feeds.md) — Adds entries to an append-only Merkle tree using consecutive queuing or predefined ordering. ([source](https://github.com/google/trillian#readme))
- [Data Canonicalization](https://awesome-repositories.com/f/data-databases/data-canonicalization.md) — Converts equivalent formulations of data into a single format to prevent duplication of identical entries. ([source](https://github.com/google/trillian/blob/master/docs/Personalities.md))
- [SQL-Backed Stores](https://awesome-repositories.com/f/data-databases/key-value-stores/sql-backed-stores.md) — Persists cryptographically hashed trees and maps across various relational database backends.
- [Pluggable Database Backends](https://awesome-repositories.com/f/data-databases/persistent-storage-backends/pluggable-database-backends.md) — Integrates with various relational databases to persist verifiable data. ([source](https://github.com/google/trillian/tree/master/storage))
- [Relational Storage Backends](https://awesome-repositories.com/f/data-databases/persistent-storage-backends/relational-storage-backends.md) — Offloads the storage of tree nodes and leaf data to relational databases for durability and scalability. ([source](https://github.com/google/trillian/blob/master/CHANGELOG.md))
- [Tamper-Proof Database Managements](https://awesome-repositories.com/f/data-databases/tamper-proof-database-managements.md) — Records system events or financial transactions with mathematical proof of the sequence and content.
- [Verifiable Map Generation](https://awesome-repositories.com/f/data-databases/verifiable-map-generation.md) — Creates cryptographically verifiable maps using a pipeline approach to scale efficiency for large datasets. ([source](https://github.com/google/trillian/tree/master/experimental/batchmap))
- [Verifiable Map Leaf Management](https://awesome-repositories.com/f/data-databases/verifiable-map-leaf-management.md) — Writes and verifies individual or batch leaves in a sparse Merkle tree map. ([source](https://github.com/google/trillian/blob/master/CHANGELOG.md))

### Software Engineering & Architecture

- [Merkle-Tree Storage Engines](https://awesome-repositories.com/f/software-engineering-architecture/string-processing-algorithms/tree-based-storage/merkle-tree-storage-engines.md) — Organizes data into a cryptographic Merkle tree structure to enable efficient inclusion and consistency proofs.
- [Sparse Merkle Trie State Verification](https://awesome-repositories.com/f/software-engineering-architecture/string-processing-algorithms/tree-based-storage/merkle-tree-storage-engines/merkle-tree-data-integrity/sparse-merkle-trie-state-verification.md) — Implements a key-value store using a sparse Merkle tree to provide verifiable mapping of keys to values.
- [Application Logic Extensions](https://awesome-repositories.com/f/software-engineering-architecture/core-logic-extensions/application-logic-extensions.md) — Pairs a data store with a personality layer to handle admission criteria and data canonicalization. ([source](https://github.com/google/trillian/blob/master/README.md))
- [Iterable and Mapping Content Validators](https://awesome-repositories.com/f/software-engineering-architecture/map-key-validation/map-value-validators/iterable-and-mapping-content-validators.md) — Applies structural and authentication checks to entries to ensure they meet format and trust requirements. ([source](https://github.com/google/trillian/blob/master/docs/TransparentLogging.md))
- [Admission Layers](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/modular-decoupled-design/structural-design-paradigms/decoupled-logic-encapsulation/logic-decoupling/admission-layers.md) — Decouples core storage mechanisms from application-specific admission criteria and data canonicalization rules.

### Content Management & Publishing

- [Technical Transparency Log Infrastructure](https://awesome-repositories.com/f/content-management-publishing/technical-transparency-log-infrastructure.md) — Builds systems that allow public auditors to verify the integrity and consistency of a shared set of records.

### DevOps & Infrastructure

- [Distributed Leader Election](https://awesome-repositories.com/f/devops-infrastructure/distributed-leader-election.md) — Coordinates a single active master node among a distributed cluster to ensure high availability.
- [Verifiable Tree Hosting](https://awesome-repositories.com/f/devops-infrastructure/multi-tenant-hosting/verifiable-tree-hosting.md) — Hosts several independent Merkle trees within a single installation to support multi-tenancy. ([source](https://github.com/google/trillian/blob/master/README.md))
- [Admission Request Validation](https://awesome-repositories.com/f/devops-infrastructure/admission-request-validation.md) — Validates submissions and canonicalizes data using application-specific logic to manage external interfaces. ([source](https://github.com/google/trillian#readme))

### Security & Cryptography

- [Cryptographic Inclusion and Consistency Proofs](https://awesome-repositories.com/f/security-cryptography/cryptographic-inclusion-and-consistency-proofs.md) — Produces inclusion and consistency proofs allowing clients to verify data without downloading the entire dataset. ([source](https://github.com/google/trillian#readme))
- [Leaf Inclusion Proofs](https://awesome-repositories.com/f/security-cryptography/merkle-proof-verifiers/leaf-inclusion-proofs.md) — Generates cryptographic proofs to verify that a specific entry exists within a given tree root. ([source](https://github.com/google/trillian/blob/master/docs/TransparentLogging.md))
- [Proof Generation](https://awesome-repositories.com/f/security-cryptography/merkle-tree-utilities/proof-generation.md) — Produces cryptographic Merkle proofs for specific leaf indices or hashes within the tree. ([source](https://github.com/google/trillian/blob/master/trillian_log_api.proto))
- [Threshold-Signed State Management](https://awesome-repositories.com/f/security-cryptography/threshold-signed-state-management.md) — Maintains a history of signed tree heads to establish the authoritative state and size of the log.
- [Certificate Transparency](https://awesome-repositories.com/f/security-cryptography/certificate-transparency.md) — Maintains a verifiable log of digital certificates to prevent fraudulent issuance and improve PKI security.
- [Signing Key Rotation](https://awesome-repositories.com/f/security-cryptography/code-signing/signing-key-rotation.md) — Updates private signing keys via an administrative interface to maintain the trust chain without altering storage. ([source](https://github.com/google/trillian/blob/master/CHANGELOG.md))
- [Inclusion Commitments](https://awesome-repositories.com/f/security-cryptography/inclusion-commitments.md) — Provides a signed commitment to incorporate a submitted entry within a defined time window. ([source](https://github.com/google/trillian/blob/master/docs/TransparentLogging.md))
- [Data Submission Validators](https://awesome-repositories.com/f/security-cryptography/infrastructure-policy-enforcers/virtual-cluster-resource-policies/admission-controllers/data-submission-validators.md) — Validates that incoming data is signed by an authorized entity and follows a specific required structure. ([source](https://github.com/google/trillian/blob/master/docs/Personalities.md))
- [Signing Key Lifecycle Management](https://awesome-repositories.com/f/security-cryptography/signing-key-lifecycle-management.md) — Handles cryptographic keys and signing operations using hardware modules or standard file formats. ([source](https://github.com/google/trillian/blob/master/docs/Feature_Implementation_Matrix.md))
- [Split-View Attack Detection](https://awesome-repositories.com/f/security-cryptography/split-view-attack-detection.md) — Shares observer views via a gossip protocol to ensure all users see the same data. ([source](https://github.com/google/trillian/blob/master/docs/Personalities.md))
- [Verifiable Map Integrity Checks](https://awesome-repositories.com/f/security-cryptography/verifiable-map-integrity-checks.md) — Checks if a specific key-value pair is correctly committed within a set of map tiles. ([source](https://github.com/google/trillian/tree/master/experimental/batchmap))

### Networking & Communication

- [Gossip Protocols](https://awesome-repositories.com/f/networking-communication/gossip-protocols.md) — Uses a gossip protocol to synchronize observer views and detect split-view attacks.
