Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Revision history for lsm-tree

## 0.1.0.0 -- YYYY-mm-dd
## 1.0.0.0 -- 2025-07

* First version. Released on an unsuspecting world.
* First release version.
2 changes: 1 addition & 1 deletion NOTICE
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Copyright 2023 Input Output Global, Inc. (IOG), 2023-2025 INTERSECT.
Copyright (c) 2023-2025 Cardano Development Foundation

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
Expand Down
15 changes: 10 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,21 @@
[![Build](https://img.shields.io/github/actions/workflow/status/IntersectMBO/lsm-tree/ci.yml?label=Build)](https://github.com/IntersectMBO/lsm-tree/actions/workflows/ci.yml)
[![Haddocks](https://img.shields.io/badge/documentation-Haddocks-purple)](https://IntersectMBO.github.io/lsm-tree/)

> :warning: **This library is in active development**: there is currently no release schedule!
This package has been developed by Well-Typed LLP on behalf of the Cardano
Development Foundation and Intersect. A [project report] and [integration notes]
are available.

This package is developed by Well-Typed LLP on behalf of Input Output Global, Inc. (IOG) and INTERSECT.
The main contributors are Duncan Coutts, Joris Dral, Matthias Heinzel, Wolfgang Jeltsch, Wen Kokke, and Alex Washburn.
[project report]: https://github.com/IntersectMBO/lsm-tree/blob/main/doc/final-report/final-report.pdf
[integration notes]: https://github.com/IntersectMBO/lsm-tree/blob/main/doc/final-report/integration-notes.pdf

The primary authors are Duncan Coutts, Joris Dral, Matthias Heinzel,
Wolfgang Jeltsch, Wen Kokke, and Alex Washburn.

## Description

This package contains an efficient implementation of on-disk key–value
storage, implemented as a log-structured merge-tree or LSM-tree. An
LSM-tree is a data structure for key–value mappings, similar to
storage, implemented as a log-structured merge-tree, LSM-tree or LSMT.
An LSM-tree is a data structure for key–value mappings, similar to
`Data.Map`, but optimized for large tables with a high insertion volume.
It has support for:

Expand Down
2 changes: 1 addition & 1 deletion blockio/NOTICE
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Copyright 2023 Input Output Global, Inc. (IOG), 2023-2025 INTERSECT.
Copyright (c) 2023-2025 Cardano Development Foundation

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
Expand Down
5 changes: 1 addition & 4 deletions blockio/blockio.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,7 @@ author:
Duncan Coutts, Joris Dral, Matthias Heinzel, Wolfgang Jeltsch, Wen Kokke, and Alex Washburn

maintainer: [email protected]
copyright:
(c) 2023 Input Output Global, Inc. (IOG)
(c) 2023-2025 INTERSECT

copyright: (c) 2023-2025 Cardano Development Foundation
category: System
build-type: Simple
extra-doc-files: CHANGELOG.md
Expand Down
2 changes: 1 addition & 1 deletion bloomfilter-blocked/NOTICE
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Copyright 2023 Input Output Global, Inc. (IOG), 2023-2025 INTERSECT.
Copyright (c) 2023-2025 Cardano Development Foundation

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
Expand Down
5 changes: 1 addition & 4 deletions bloomfilter-blocked/bloomfilter-blocked.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,7 @@ author:
Duncan Coutts, Joris Dral, Matthias Heinzel, Wolfgang Jeltsch, Wen Kokke, and Alex Washburn

maintainer: [email protected], [email protected]
copyright:
(c) 2023 Input Output Global, Inc. (IOG)
(c) 2023-2025 INTERSECT

copyright: (c) 2023-2025 Cardano Development Foundation
category: Data
build-type: Simple
tested-with:
Expand Down
13 changes: 7 additions & 6 deletions doc/final-report/final-report.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
title: "Storing the Cardano ledger state on disk:
final report for a high-performance backend"
subtitle: "[A technical report by Well-Typed LLP on behalf of Intersect MBO]{.smallcaps}"
subtitle: "[A technical report by Well-Typed on behalf of Intersect]{.smallcaps}"
author:
- Duncan Coutts
- Joris Dral
Expand Down Expand Up @@ -107,17 +107,18 @@ references:
---

\begin{changelog}[simple, sectioncmd=\section*]
\shortversion{author={Duncan Coutts, Joris Dral, Wolfgang Jeltsch}, v=0.1, date=July 2025, changes=Final draft}
\shortversion{author={Duncan Coutts, Joris Dral, Wolfgang Jeltsch}, v=1.0, date=July 2025, changes=Final draft}
\end{changelog}

# Introduction

As part of the project to reduce `cardano-node`’s memory use [@utxo-db] by
storing the bulk of the ledger state on disk, colloquially known as UTxO-HD[^1],
a high-performance disk backend was developed as an arm’s-length project by
Well-Typed LLP on behalf of Intersect MBO[^2]. The intent is for the backend to
be integrated into the consensus layer of `cardano-node`, specifically to be
used for storing the larger parts of the Cardano ledger state.
Well-Typed LLP on behalf of the Cardano Development Foundation and
Intersect[^2]. The intent is for the backend to be integrated into the
consensus layer of `cardano-node`, specifically to be used for storing the
larger parts of the Cardano ledger state.

[^1]: ‘UTxO-HD’ is a classic project-manager’s misnomer. The project is not just
about the UTxO but also other parts of the ledger state, and it is not
Expand All @@ -128,7 +129,7 @@ used for storing the larger parts of the Cardano ledger state.
engrained.

[^2]: In its early stages, it was developed on behalf of Input Output Global,
Inc. (IOG).
Inc. (IOG). It was novated in early 2024.

This backend is now complete. It satisfies all its functional requirements and
meets all its performance requirements, including stretch targets.
Expand Down
Binary file added doc/final-report/final-report.pdf
Binary file not shown.
Binary file added doc/final-report/integration-notes.pdf
Binary file not shown.
15 changes: 5 additions & 10 deletions lsm-tree.cabal
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
cabal-version: 3.4
name: lsm-tree
version: 0.1.0.0
version: 1.0.0.0
synopsis: Log-structured merge-trees
description:
This package contains an efficient implementation of on-disk key–value storage, implemented as a log-structured merge-tree or LSM-tree.
This package contains an efficient implementation of on-disk key–value storage, implemented as a log-structured merge-tree, LSM-tree or LSMT.
An LSM-tree is a data structure for key–value mappings, similar to "Data.Map", but optimized for large tables with a high insertion volume.
It has support for:

Expand Down Expand Up @@ -485,11 +485,8 @@ license-files:
author:
Duncan Coutts, Joris Dral, Matthias Heinzel, Wolfgang Jeltsch, Wen Kokke, and Alex Washburn

maintainer: TODO: MAINTAINER EMAIL
copyright:
(c) 2023 Input Output Global, Inc. (IOG)
(c) 2023-2025 INTERSECT

maintainer: [email protected]
copyright: (c) 2023-2025 Cardano Development Foundation
category: Database
build-type: Simple
tested-with: GHC ==9.2 || ==9.4 || ==9.6 || ==9.8 || ==9.10 || ==9.12
Expand All @@ -499,12 +496,10 @@ source-repository head
type: git
location: https://github.com/IntersectMBO/lsm-tree

-- TODO: this tag obviously does not exist yet because the package has not
-- been published
source-repository this
type: git
location: https://github.com/IntersectMBO/lsm-tree
tag: lsm-tree-0.1.0.0
tag: lsm-tree-1.0.0.0

common warnings
ghc-options:
Expand Down
11 changes: 8 additions & 3 deletions scripts/generate-readme-header.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,14 @@
[![Build](https://img.shields.io/github/actions/workflow/status/IntersectMBO/lsm-tree/ci.yml?label=Build)](https://github.com/IntersectMBO/lsm-tree/actions/workflows/ci.yml)
[![Haddocks](https://img.shields.io/badge/documentation-Haddocks-purple)](https://IntersectMBO.github.io/lsm-tree/)

> :warning: **This library is in active development**: there is currently no release schedule!
This package has been developed by Well-Typed LLP on behalf of the Cardano
Development Foundation and Intersect. A [project report] and [integration notes]
are available.

This package is developed by Well-Typed LLP on behalf of Input Output Global, Inc. (IOG) and INTERSECT.
The main contributors are Duncan Coutts, Joris Dral, Matthias Heinzel, Wolfgang Jeltsch, Wen Kokke, and Alex Washburn.
[project report]: https://github.com/IntersectMBO/lsm-tree/blob/main/doc/final-report/final-report.pdf
[integration notes]: https://github.com/IntersectMBO/lsm-tree/blob/main/doc/final-report/integration-notes.pdf

The primary authors are Duncan Coutts, Joris Dral, Matthias Heinzel,
Wolfgang Jeltsch, Wen Kokke, and Alex Washburn.

## Description
3 changes: 1 addition & 2 deletions src/Database/LSMTree.hs
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
{- |
Module : Database.LSMTree
Copyright : (c) 2023, Input Output Global, Inc. (IOG)
(c) 2023-2025, INTERSECT
Copyright : (c) 2023-2025, Cardano Development Foundation
License : Apache-2.0
Stability : experimental
Portability : portable
Expand Down
3 changes: 1 addition & 2 deletions src/Database/LSMTree/Simple.hs
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
{- |
Module : Database.LSMTree.Simple
Copyright : (c) 2023, Input Output Global, Inc. (IOG)
(c) 2023-2025, INTERSECT
Copyright : (c) 2023-2025, Cardano Development Foundation
License : Apache-2.0
Stability : experimental
Portability : portable
Expand Down
Loading