#hashing #tree

bao-tree

BLAKE3 verfiied streaming with custom chunk groups and range set queries

26 releases (7 breaking)

new 0.8.0 Sep 25, 2023
0.7.0 Aug 23, 2023
0.5.3 Jul 31, 2023
0.1.5 Mar 31, 2023

#216 in Data structures

Download history 427/week @ 2023-06-05 295/week @ 2023-06-12 502/week @ 2023-06-19 623/week @ 2023-06-26 850/week @ 2023-07-03 1054/week @ 2023-07-10 807/week @ 2023-07-17 575/week @ 2023-07-24 594/week @ 2023-07-31 717/week @ 2023-08-07 528/week @ 2023-08-14 1043/week @ 2023-08-21 692/week @ 2023-08-28 275/week @ 2023-09-04 327/week @ 2023-09-11 808/week @ 2023-09-18

2,113 downloads per month
Used in 3 crates (2 directly)

MIT/Apache

235KB
5K SLoC

bao-tree

Actions Status docs.rs crates.io

The merkle tree used for blake3 verified streaming.

This is a slightly different take on blake3 verified streaming than the bao crate.

The network wire format for encoded data and slices is compatible with the bao crate, except that this crate has builtin support for runtime configurable chunk groups.

The intention is also to support both sync and async en/decoding out of the box with maximum code sharing.

It also allows encoding not just single ranges but sets of non-overlapping ranges. E.g. you can ask for bytes [0..1000,5000..6000] in a single query.

It allows to define both pre- and post order outboard formats. Post order outboard formats have advantages for synchronizing append only files.

Dependencies

~3–14MB
~144K SLoC