PHPackages                             paragonie/chronicle - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Security](/categories/security)
4. /
5. paragonie/chronicle

ActiveProject[Security](/categories/security)

paragonie/chronicle
===================

Public hash chain powered by Slim Framework, Sapient, and Blakechain

v1.3.1(4y ago)4702426[4 issues](https://github.com/paragonie/chronicle/issues)MITPHPPHP ^7.1|^8CI failing

Since Jun 27Pushed 4y ago24 watchersCompare

[ Source](https://github.com/paragonie/chronicle)[ Packagist](https://packagist.org/packages/paragonie/chronicle)[ Docs](https://github.com/paragonie/chronicle)[ RSS](/packages/paragonie-chronicle/feed)WikiDiscussions master Synced 2mo ago

READMEChangelog (10)Dependencies (14)Versions (21)Used By (0)

[![](https://camo.githubusercontent.com/dc054f07560a947add485a3ae120472cb17bd3e0b97fa4e6e8a5fed400293f44/68747470733a2f2f70617261676f6e69652e636f6d2f7374617469632f696d616765732f6368726f6e69636c652d6c6f676f2e737667)](https://camo.githubusercontent.com/dc054f07560a947add485a3ae120472cb17bd3e0b97fa4e6e8a5fed400293f44/68747470733a2f2f70617261676f6e69652e636f6d2f7374617469632f696d616765732f6368726f6e69636c652d6c6f676f2e737667) Chronicle
===================================================================================================================================================================================================================================================================================================================================================================================================================================================

[](#-chronicle)

[![Build Status](https://github.com/paragonie/chronicle/actions/workflows/ci.yml/badge.svg)](https://github.com/paragonie/chronicle/actions)[![Latest Stable Version](https://camo.githubusercontent.com/754f7792c0be3b8f8609cc31ad7cee79f7a2e8505dff4be426f4236b668b1565/68747470733a2f2f706f7365722e707567782e6f72672f70617261676f6e69652f6368726f6e69636c652f762f737461626c65)](https://packagist.org/packages/paragonie/chronicle)[![Latest Unstable Version](https://camo.githubusercontent.com/a4dfad38c45d7564726191088f6532a143417c4168acb418ef10cafe715e25d2/68747470733a2f2f706f7365722e707567782e6f72672f70617261676f6e69652f6368726f6e69636c652f762f756e737461626c65)](https://packagist.org/packages/paragonie/chronicle)[![License](https://camo.githubusercontent.com/d0b4d98a85ce122783fd6cbd597152138f80a045adf6b92062ddb1c56579a1a7/68747470733a2f2f706f7365722e707567782e6f72672f70617261676f6e69652f6368726f6e69636c652f6c6963656e7365)](https://packagist.org/packages/paragonie/chronicle)

**Chronicle** is a self-hostable microservice, built with [Slim Framework](https://www.slimframework.com), which enables authorized users to commit arbitrary data to an immutable, append-only public ledger.

Chronicle is superior to "blockchain" solutions for most real-world technical problems that don't involve proofs-of-work or Byzantine fault tolerance.

More precisely, Chronicle is a self-hostable microservice exposing an append-only, cryptographically-secure hash chain data structure that accepts arbitrary data from authorized clients through an HTTP API, secured by [Sapient](https://github.com/paragonie/sapient), that can be used as a building block for building a cryptographic audit trail similar to [Certificate Transparency](https://www.certificate-transparency.org/).

> [Chronicle will make you question the need for blockchain technology](https://paragonie.com/blog/2017/07/chronicle-will-make-you-question-need-for-blockchain-technology).

Chronicle was developed by [Paragon Initiative Enterprises](https://paragonie.com)as part of our continued efforts to make the Internet more secure.

Getting Started with Chronicle (Documentation)
----------------------------------------------

[](#getting-started-with-chronicle-documentation)

- [Instructions for Installing Chronicle](docs/01-setup.md)
- [How to write (publish) to your Chronicle](docs/02-publish.md)
- [How to setup cross-signing to other Chronicles](docs/03-cross-signing.md)
- [How to replicate other Chronicles](docs/04-replication.md)
- [Concurrent Instances](docs/05-instances.md)
- [Configuration](docs/06-config.md)
- [Internal Developer Documentation](docs/internals)
    - [Design Philosophy](docs/internals/01-design-philosophy.md)
    - [SQL Tables](docs/internals/02-sql-tables.md)

### Client-Side Software that Interacts with Chronicle

[](#client-side-software-that-interacts-with-chronicle)

#### PHP

[](#php)

- [Gossamer](https://gossamer.tools) - PIE
    - [gossamer-server](https://github.com/paragonie/gossamer-server)
    - [libgossamer](https://github.com/paragonie/libgossamer)
- [Herd](https://github.com/paragonie/herd) - PIE
- [Quill](https://github.com/paragonie/quill) - PIE
    - [Monolog-Quill](https://github.com/paragonie/monolog-quill) - PIE
- [Chronicle-API](https://github.com/lookyman/chronicle-api) - [Lukáš Unger (@lookyman)](https://github.com/lookyman)

What does Chronicle do?
-----------------------

[](#what-does-chronicle-do)

Chronicle allows trusted clients to send data to be included in an immutable, auditable, cryptographic permanent record.

Furthermore, Chronicle has cross-signing and many-to-one replication built-in, which, when used, greatly enhances the auditability and availability of the data written to your local Chronicle instance.

What problems do Chronicle solve?
---------------------------------

[](#what-problems-do-chronicle-solve)

### Chain of Custody

[](#chain-of-custody)

If you have sensitive information, you can write metadata about client access times to a private Chronicle in order to have verifiable, tamper-resistant proof that specific records were accessed by specific user accounts at a specific time.

### Proof of Knowledge

[](#proof-of-knowledge)

By inserting an encrypted message and then revealing the key at a later date, you can provide strong evidence of prior knowledge.

### Userbase Consistency Verification

[](#userbase-consistency-verification)

For building a [secure code delivery](https://defuse.ca/triangle-of-secure-code-delivery.htm) system, committing some metadata and a SHA256 or BLAKE2 hash of each update file to a publicly verifiable Chronicle allows users to compile a whitelist of known update files to help block trojan horse malware (in the event of a compromised update server).

For best results, combine with cryptographic signatures (which may also be registered in the Chronicle) and reproducible builds.

### Auditable Security Event Logging

[](#auditable-security-event-logging)

Because of Chronicle's cryptographically assured append-only properties, and its use of [modern elliptic curve digital signatures](https://ed25519.cr.yp.to/), Chronicle is a good fit for integrating with SIEM solutions and internal SOCs.

How does it work?
-----------------

[](#how-does-it-work)

All communications are secured with [Sapient](https://github.com/paragonie/sapient). Sapient ensures that all published messages are signed with Ed25519. All messages are committed to a hash chain data structure backed by BLAKE2b, which we call [Blakechain](https://github.com/paragonie/blakechain) for short.

There are two hashes for each message:

1. The hash of the current message, whose BLAKE2b key is the previous message's block. This is just called `currhash` internally.
2. The summary hash, which is a BLAKE2b hash of all message hashes to date, concatenated together in order. This is called `summaryhash` internally.

The rationale for using the previous message's hash was to add a degree of domain separation in the event that a BLAKE2b collision attack is ever discovered. The keying should reduce the likelihood of any practical attacks, especially if the chain is updated rapidly.

###  Health Score

37

—

LowBetter than 83% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity28

Limited adoption so far

Community24

Small or concentrated contributor base

Maturity67

Established project with proven stability

 Bus Factor1

Top contributor holds 78% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~87 days

Recently: every ~224 days

Total

20

Last Release

1577d ago

Major Versions

v0.5.1 → v1.0.02017-07-09

PHP version history (2 changes)v0.1.0PHP ^7

v1.3.0PHP ^7.1|^8

### Community

Maintainers

![](https://www.gravatar.com/avatar/05d241256cda885139a5697d3bb536b5cec3b430c1adb9c524bf92a37a55758d?d=identicon)[paragonie-scott](/maintainers/paragonie-scott)

---

Top Contributors

[![paragonie-security](https://avatars.githubusercontent.com/u/15914520?v=4)](https://github.com/paragonie-security "paragonie-security (191 commits)")[![paragonie-scott](https://avatars.githubusercontent.com/u/11591518?v=4)](https://github.com/paragonie-scott "paragonie-scott (27 commits)")[![vzool](https://avatars.githubusercontent.com/u/4952736?v=4)](https://github.com/vzool "vzool (20 commits)")[![lookyman](https://avatars.githubusercontent.com/u/3863468?v=4)](https://github.com/lookyman "lookyman (2 commits)")[![pplnevstokes](https://avatars.githubusercontent.com/u/167183882?v=4)](https://github.com/pplnevstokes "pplnevstokes (2 commits)")[![berteltorp](https://avatars.githubusercontent.com/u/2384153?v=4)](https://github.com/berteltorp "berteltorp (1 commits)")[![soatok](https://avatars.githubusercontent.com/u/8157726?v=4)](https://github.com/soatok "soatok (1 commits)")[![aidantwoods](https://avatars.githubusercontent.com/u/3288888?v=4)](https://github.com/aidantwoods "aidantwoods (1 commits)")

---

Tags

append-onlyblake2bchaincryptographyhashhash-chainknowledgephpproofsapientsecuritysecurity-toolssecuritycryptographyBLAKE2bhashhash-chainBLAKE2append-onlysapientblakechain

###  Code Quality

TestsPHPUnit

Static AnalysisPsalm

Type Coverage Yes

### Embed Badge

![Health badge](/badges/paragonie-chronicle/health.svg)

```
[![Health](https://phpackages.com/badges/paragonie-chronicle/health.svg)](https://phpackages.com/packages/paragonie-chronicle)
```

###  Alternatives

[phpseclib/phpseclib

PHP Secure Communications Library - Pure-PHP implementations of RSA, AES, SSH2, SFTP, X.509 etc.

5.6k434.8M1.3k](/packages/phpseclib-phpseclib)[defuse/php-encryption

Secure PHP Encryption Library

3.9k162.4M214](/packages/defuse-php-encryption)[paragonie/halite

High-level cryptography interface powered by libsodium

1.2k9.4M63](/packages/paragonie-halite)[paragonie/ciphersweet

Searchable field-level encryption library for relational databases

4641.2M21](/packages/paragonie-ciphersweet)[rych/phpass

PHP Password Library: Easy, secure password management for PHP

248801.7k4](/packages/rych-phpass)[paragonie/blakechain

Hash chain using BLAKE2b

242.9k3](/packages/paragonie-blakechain)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
