A security-focused entry in TopGit's GitHub warehouse: chjj/liburkel, 316 stars, Security, C. Authenticated key-value store (i.e. an urkel tree)
Snapshot summary built from the project's own GitHub metadata — there's no written TopGit review yet. The page will update automatically when a full review is published.
WHY NO REVIEW YET
TopGit writes full reviews for the most-starred, most-requested repositories. This page is a snapshot until then — see the READ ME tab for the original README in full.
An optimized and cryptographically provable key-value store. Written in C.
Design
The urkel tree is implemented as a base-2 merkelized radix tree. It builds
on earlier research done by Bram Cohen and Amaury Séchet in order to
create an alternative to Ethereum's base-16 trie.
Nodes are stored in a series of append-only files for snapshotting and crash
consistency capabilities. Due to these presence of these features, Urkel has
the ability to expose a fully transactional database.
Urkel is its own database. This is in contrast to earlier authenticated data
structures which were typically implemented on top of an existing data store
like LevelDB.
The urkel tree is currently used in production for the Handshake protocol.
Features
Transactions - Fully atomic and transactional API.
Snapshots - Transactions can also behave as snapshots, pointing to a
historical root hash.
Iteration - Full tree iteration¹.
Compact Proofs - Small proof size, with proof nodes averaging ~34 bytes in
size.
History Independence - Deterministic root hash calculation regardless of
insertion/removal order.
Crash Consistency - kill -9'able.
Cross Platform - Runs on Windows XP and up, as well as any POSIX.1-2001
compatible OS.
WASM Support - Builds with both Emscripten as well as the WASI SDK.
Note that range iteration is not particularly useful for our use case.
Usage: urkel [options] [action] [args]
Actions:
create create a new database
destroy destroy database
info print database information
root print root hash
get <key> retrieve value
insert <key> <value> insert value
remove <key> remove value
list list all keys
prove <key> create proof
verify <key> <proof> verify proof (requires --root)
Options:
-p, --path <path> path to database (default: $URKEL_PATH)
-r, --root <hash> root hash to use for snapshots
-H, --hash hash key with BLAKE2b-256
-h, --help output usage information
Environment Variables:
URKEL_PATH path to database (default: ./)
Benchmarks
Benchmarks were run on a high-end but consumer-grade laptop, containing a Intel
Core i7-8550U 1.80GHz and an NVMe PCIe SSD.
Platforms without memory-mapped file support will suffer in performance (this
includes Emscripten and WASI).
Contribution and License Agreement
If you contribute code to this project, you are implicitly allowing your code
to be distributed under the MIT license. You are also implicitly verifying that
all code is your original work. </legalese>
License
Copyright (c) 2020, Christopher Jeffrey (MIT License).
How does chjj/liburkel compare to other Security projects?
chjj/liburkel is tracked by TopGit in the Security category, with 316 GitHub stars and written in C. Browse the Security topic page on TopGit to compare it against similar projects by stars and activity.
Is chjj/liburkel open source?
TopGit's metadata for chjj/liburkel does not record a license. Most public repositories on GitHub ARE open source, but the exact terms vary — verify by opening the LICENSE file directly.
What else is in the Security space?
chjj/liburkel is tracked by TopGit under the Security category, alongside 2 GitHub-tagged topics. Trending and Topics pages list peer repositories of comparable stars and language.
What is chjj/liburkel?
chjj/liburkel (chjj/liburkel) is a C project on GitHub. From the project's own README: Authenticated key-value store (i.e. an urkel tree)
Where do I read more about chjj/liburkel?
This TopGit page is a snapshot — the READ ME tab shows the project's own README content (links stripped, images preserved). The GitHub repository at github.com/chjj/liburkel is the definitive source.
Why is chjj/liburkel categorized under Security?
TopGit places chjj/liburkel in the Security category based on its GitHub topics and description (tagged: "cryptography", "database"). Categories are assigned from real repository metadata, not editorial guesswork.
Read full README in the tab above.
Want a second opinion on liburkel?
Ask an AI that can read this page — one click and you get its take on liburkel.