-
Notifications
You must be signed in to change notification settings - Fork 0
Logbook January 2026
paolino edited this page Jan 29, 2026
·
6 revisions
Issue: #7
Christmas time made me realize that csmt interface doesn't support clients to plug in operations inside the transactions.
Looking at cardano-utxo-csmt we need that in at least 2 cases
- changes comes in batches (one block -> multiple txs -> multiple changes for each tx)
- inverse operations tail queue has to be updated atomically with the csmt
The haskell library doesn't support that so I implemented a small library over it with 2 goals
- expose a monad (DSL) to track transaction building in memory
- have a way to index different rocksdb column-families when using the DSL inside the transaction
PRs: #8
- Updated tests
- Moved the rocksdb-transaction lib in a separate sub-package
- stop supporting arx format and mode to AppImage (arx doesn't build anymore 🤷 )
Issue: #7
PRs: #9
- Added support for cursor operations
- The DSL now supports cursors that can be opened inside a transaction and used to iterate over the tables contents
- The cursor DSL operations are mostly reflecting the rocksdb but as with the transaction DSL they are implementable by other KV backends https://github.com/paolino/haskell-csmt/blob/0d5ea88b347b74b5cebcaf2b33703104bee9dd58/src/rocksdb-transactions/Database/KV/Cursor.hs#L50
- The transaction DSL now supports cursor operations https://github.com/paolino/haskell-csmt/blob/0d5ea88b347b74b5cebcaf2b33703104bee9dd58/src/rocksdb-transactions/Database/KV/Transaction.hs#L105 . The trick is that the cursor DSL can lift the transaction DSL operations while itself being a transaction operation.
- Added an E2E test for cursor operations inside transactions https://github.com/paolino/haskell-csmt/blob/0d5ea88b347b74b5cebcaf2b33703104bee9dd58/test/CSMT/Backend/RocksDB/TransactionSpec.hs#L102
Issue: #7
- Fixed a bug in the cursor implementation where the
seekoperation was not using the column type
Issue: #7
- Added support for iterating outside transactions
- Added synchronized runner for transactions. This should help with concurrent usage of the same DB instance across multiple threads.
- Added reset instruction to transaction DSL
- Merged PR refactor: use external rocksdb-kv-transactions package #12
- Extracted kv-transactions to a separate repository rocksdb-kv-transactions
- Removed internal
kv-transactionsandrocksdb-kv-transactionssub-libraries - Updated imports:
mkCols→fromPairList
- Merged PR Improve code quality: documentation and naming #13
- Added Haddock documentation comments to all CSMT library modules
- Fixed typos:
stepSibiling→stepSibling,sibiling→sibling - Renamed functions for clarity:
opposite→oppositeDirection,mkCompose→buildComposeTree,mkInclusionProof→buildInclusionProof - Expanded README and mkdocs with concepts page and library API guide
- Improved justfile with dynamic file discovery using
find
- Merged PR Fix repository URLs from csmt to haskell-csmt #14
- Fixed GitHub Pages, badge links, and release URLs to use correct repository name
- Opened Issue Simplify inclusion proof format #16
- Plan to simplify the proof format for better client consumption
- Related to cardano-utxo-csmt#60
- Closed Issue Support transactions and column families in rocksdb #7
- Completed via external rocksdb-kv-transactions package