Commit graph

252 commits

Author SHA1 Message Date
e731897bcd smt: add build_subtrees() to coordinate subtree building 2024-11-13 12:25:57 -07:00
124d14e132 add a parallel construction benchmark to src/main.rs 2024-11-13 12:25:57 -07:00
cdad9b57db improve docs for build_subtree() 2024-11-13 12:25:57 -07:00
0e9787c268 smt: add from_raw_parts() to trait interface 2024-11-13 12:25:57 -07:00
acef91ef32 implement test_multithreaded_subtree 2024-11-13 12:25:57 -07:00
b06334a46b convert test_singlethreaded_subtree to use an iterator adapter instead of state mutation 2024-11-13 12:25:57 -07:00
308fdf1a1c smt: make with_entries() a trait method 2024-11-13 12:25:57 -07:00
30223403cd SubtreeLeaf::from_smt_leaf() was only used in tests 2024-11-13 12:25:57 -07:00
1039bb7cf5 cleanup test_singlethreaded_subtrees a bit 2024-11-13 12:25:57 -07:00
26a5cc52ac rename PrecomputedSubtrees -> PairComputations 2024-11-13 12:25:57 -07:00
a7c49faaa6 factor out subtree-append logic 2024-11-13 12:25:57 -07:00
04ca2fd3ac make PrecomputedSubtrees more generic 2024-11-13 12:25:57 -07:00
a25982dd2b working test_singlethreaded_subtrees() 2024-11-13 12:25:57 -07:00
7ce8ef7ddb refactor sorted_pairs_to_leaves() to also group subtrees 2024-11-13 12:25:57 -07:00
ef1c7f611e add test_two_subtrees() test 2024-11-13 12:25:57 -07:00
b5b8ea4d00 refactor test_build_subtree_from_leaves() 2024-11-13 12:25:57 -07:00
60e18e6f05 add sorted_pairs_to_leaves() and test for it 2024-11-13 11:05:08 -07:00
82984e8a3a WIP(smt): impl simple subtree8 hashing and benchmarks for it
bench(smt-subtree): add a benchmark for single-leaf subtrees

make build_subtree also return the next leaf row

convert (col, hash) tuples to a dedicated struct
2024-11-13 11:02:06 -07:00
8e594963d2 merkle: add parent() helper function on NodeIndex 2024-11-04 16:17:58 -07:00
Al-Kindi-0
0d75e3593b
chore: migrate to Winterfell v0.10.0 release (#338) 2024-10-29 15:02:46 -07:00
Bobbin Threadbare
689cc93ed1
chore: update crate version to v0.11.0 and set MSRV to 1.82 2024-10-17 23:16:41 -07:00
Bobbin Threadbare
7970d3a736
Merge branch 'main' into next 2024-10-17 20:53:09 -07:00
Al-Kindi-0
a734dace1e
feat: update RPO's padding rule to use that in the xHash paper (#318) 2024-10-17 20:49:44 -07:00
Andrey Khmuro
940cc04670
feat: add Smt::is_empty (#337) 2024-10-17 14:27:50 -07:00
Andrey Khmuro
e82baa35bb
feat: return error instead of panic during MMR verification (#335) 2024-10-17 07:23:29 -07:00
Philipp Gackstatter
8adc0ab418
feat: implement get_size_hint for Smt (#331) 2024-09-26 09:13:50 -07:00
Philipp Gackstatter
a924ac6b81
feat: Add size hint for digests (#330) 2024-09-25 03:03:31 -07:00
Bobbin Threadbare
e214608c85
fix: bug introduced due to merging 2024-09-13 11:10:34 -07:00
Bobbin Threadbare
c44ccd9dec
Merge branch 'main' into next 2024-09-13 11:01:04 -07:00
Bobbin Threadbare
e34900c7d8
chore: update version to v0.10.1 2024-09-13 10:58:06 -07:00
Santiago Pittella
2b184cd4ca
feat: add de/serialization to InOrderIndex and PartialMmr (#329) 2024-09-13 08:47:46 -07:00
Bobbin Threadbare
913384600d
chore: fix typos 2024-09-11 16:52:21 -07:00
Qyriad
ae807a47ae
feat: implement transactional Smt insertion (#327)
* feat(smt): impl constructing leaves that don't yet exist

This commit implements 'prospective leaf construction' -- computing
sparse Merkle tree leaves for a key-value insertion without actually
performing that insertion.

For SimpleSmt, this is trivial, since the leaf type is simply the value
being inserted.

For the full Smt, the new leaf payload depends on the existing payload
in that leaf. Since almost all leaves are very small, we can just clone
the leaf and modify a copy.

This will allow us to perform more general prospective changes on Merkle
trees.

* feat(smt): export get_value() in the trait

* feat(smt): implement generic prospective insertions

This commit adds two methods to SparseMerkleTree: compute_mutations()
and apply_mutations(), which respectively create and consume a new
MutationSet type. This type represents as set of changes to a
SparseMerkleTree that haven't happened yet, and can be queried on to
ensure a set of insertions result in the correct tree root before
finalizing and committing the mutation.

This is a direct step towards issue 222, and will directly enable
removing Merkle tree clones in miden-node InnerState::apply_block().

As part of this change, SparseMerkleTree now requires its Key to be Ord
and its Leaf to be Clone (both bounds which were already met by existing
implementations). The Ord bound could instead be changed to Eq + Hash,
if MutationSet were changed to use a HashMap instead of a BTreeMap.

* chore(smt): refactor empty node construction to helper function
2024-09-11 16:49:57 -07:00
Paul-Henry Kajfasz
ee42d87121
Replace i. by 1. 2024-08-22 16:14:19 +01:00
Paul-Henry Kajfasz
b1cb2b6ec3
Fix comments 2024-08-22 15:21:59 +01:00
Paul-Henry Kajfasz
8bf6ef890d
fmt 2024-08-21 14:04:23 +01:00
Paul-Henry Kajfasz
e2aeb25e01
Updated doc comments 2024-08-21 14:03:43 +01:00
Paul-Henry Kajfasz
790846cc73
Merge next 2024-08-21 09:29:39 +01:00
Bobbin Threadbare
a12e62ff22
feat: improve MMR api (#324) 2024-08-18 09:35:12 -07:00
Paul-Henry Kajfasz
ad0f472708
Updated Makefile and Readme 2024-08-16 15:07:27 -07:00
Bobbin Threadbare
b171575776
merge v0.10.0 release 2024-08-06 16:58:00 -07:00
Bobbin Threadbare
dfdd5f722f
chore: fix lints 2024-08-06 16:52:46 -07:00
Elias Rad
d6ab367d32
chore: fix typos (#321) 2024-07-24 11:35:57 -07:00
Al-Kindi-0
b06cfa3c03
docs: update RPO with a comment on security given domain separation (#320) 2024-06-04 22:54:51 -07:00
Al-Kindi-0
8556c8fc43
fix: encoding Falcon secret key basis polynomials (#319) 2024-05-28 23:20:28 -07:00
Augusto Hack
78ac70120d
fix: hex_to_bytes can be used for data besides RpoDigests (#317) 2024-05-13 13:13:02 -07:00
Al-Kindi-0
f967211b5a
feat: migrate to new Winterfell (#315) 2024-05-12 03:09:27 +08:00
Augusto Hack
d58c717956
rpo/rpx: export digest error enum (#313) 2024-05-12 03:09:24 +08:00
Augusto Hack
c0743adac9
Rpo256: Add RpoDigest conversions (#311) 2024-05-12 03:09:21 +08:00
Menko
63f97e5621 feat: add rpx random coin (#307) 2024-04-24 01:02:47 -07:00