1c26227fc2
feat: impl hashing Merkle leaves that don't yet exist
...
This commit implements 'prospective leaf hashing' -- computing what the
hash of a sparse Merkle tree leaf *would* be for a key-value insertion
without actually performing that insertion.
For SimpleSmt, this is trivial, since the leaf hash and its payload are
the same.
For the full Smt, the new leaf payload (and thus, its hash) depend on
the existing payload in that leaf, making the prospective hash logic a
combination of the normal insertion logic and the normal hash logic. But
because we're only interested in the hash and not the intermediate
value, we can skip allocations and sorts for the payload itself.
2024-08-22 18:27:29 -06: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
dfdd5f722f
chore: fix lints
2024-08-06 16:52:46 -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
Al-Kindi-0
bb42388827
fix: bug in Falcon secret key basis order ( #305 )
2024-04-21 01:14:18 -07:00
Dominik Schmid
2a0ae70645
feature: adding serialization to the SMT ( #304 )
2024-04-21 01:14:18 -07:00
Bobbin Threadbare
4bf087daf8
fix: decrement leaf count in simple SMT when inserting empty value ( #303 )
2024-04-02 13:01:00 -07:00
polydez
b4dc373925
feat: add leaf count to SimpleSmt
( #302 )
2024-04-02 12:07:00 -07:00
Bobbin Threadbare
5a2e917dd5
Tracking PR for v0.9.0 release ( #278 )
...
* chore: update crate version to v0.9.0
* chore: remove deprecated re-exports
* chore: remove Box re-export
* feat: implement pure-Rust keygen and signing for RpoFalcon512 (#285 )
* feat: add reproducible builds (#296 )
* fix: address a few issues for migrating Miden VM (#298 )
* feat: add RngCore supertrait for FeltRng (#299 )
---------
Co-authored-by: Al-Kindi-0 <82364884+Al-Kindi-0@users.noreply.github.com>
Co-authored-by: Paul-Henry Kajfasz <42912740+phklive@users.noreply.github.com>
2024-03-24 08:38:08 -07:00
Bobbin Threadbare
2be17b74fb
fix: add re-exports of vec and format macros
2024-03-18 12:35:00 -07:00
Paul Schoenfelder
4c8a9809ed
fix: re-add unintentionally removed re-exported liballoc macros ( #292 )
2024-03-18 11:27:17 -07:00
Paul Schoenfelder
999a64fca6
chore: handle deprecations in winterfell 0.8.3 release
2024-03-17 16:18:23 -04:00
Augusto Hack
dbab0e9aa9
fix: clippy warnings ( #280 )
2024-02-21 20:55:02 -08:00
Andrey Khmuro
cd4525c7ad
refactor: update repo to be compatible with Winterfell 0.8 ( #275 )
2024-02-14 11:52:40 -08:00
Philippe Laferrière
552d90429b
Remove TieredSmt
( #277 )
2024-02-14 11:52:40 -08:00
Philippe Laferrière
119c7e2b6d
SmtProof
: add accessors (#276 )
...
* add accessors
* fmt
* comments
2024-02-14 11:52:40 -08:00
Philippe Laferrière
45e7e78118
Clone ( #274 )
2024-02-14 11:52:40 -08:00
Philippe Laferrière
a9475b2a2d
reexport ( #273 )
2024-02-14 11:52:40 -08:00
Philippe Laferrière
e55b3ed2ce
Introduce SmtProof
( #270 )
...
* add conversion for `SmtLeaf`
* introduce `SmtProof` scaffolding
* implement `verify_membership()`
* SmtLeaf: knows its index
* `SmtLeaf::index`
* `SmtLeaf::get_value()` returns an Option
* fix `verify_membership()`
* impl `SmtProof::get`
* impl `into_parts()`
* `SmtProof::compute_root`
* use `SmtProof` in `Smt::open`
* `SmtLeaf` constructors
* Vec
* impl `Error` for `SmtLeafError`
* fix std Error
* move Word/Digest conversions to LeafIndex
* `SmtProof::new()` returns an error
* `SparseMerkleTree::path_and_leaf_to_opening`
* `SmtLeaf`: serializable/deserializable
* `SmtProof`: serializable/deserializable
* add tests for SmtLeaf serialization
* move `SmtLeaf` to submodule
* use constructors internally
* fix docs
* Add `Vec`
* add `Vec` to tests
* no_std use statements
* fmt
* `Errors`: make heading
* use `SMT_DEPTH`
* SmtLeaf single case: check leaf index
* Multiple case: check consistency with leaf index
* use `pub(super)` instead of `pub(crate)`
* use `pub(super)`
* `SmtLeaf`: add `num_entries()` accessor
* Fix `SmtLeaf` serialization
* improve leaf serialization tests
2024-02-14 11:52:40 -08:00
Bobbin Threadbare
61a0764a61
fix: peak index calculation in MmrProof
2024-02-14 11:52:40 -08:00
Philippe Laferrière
3d71a9b59b
Smt
: remove inner nodes when removing value (#269 )
2024-02-14 11:52:40 -08:00
Philippe Laferrière
da12fd258a
Add missing methods to Smt
( #268 )
2024-02-14 11:52:40 -08:00
Bobbin Threadbare
5fcf98669d
feat: add PartialMmr::from_parts() constructor
2024-02-14 11:52:40 -08:00
Philippe Laferrière
1cdd3dbbfa
Add methods to Smt
necessary for VM tests ( #264 )
...
* Smt::inner_nodes
* Add conversion Smt -> MerkleStore
* add docstring to `Smt`
* add to docstring
* fmt
* add `leaves()` method to `Smt`
* add `kv_pairs` functions
* rewrite `into_elements()` in terms of `into_kv_pairs()`
* change docstring
2024-02-14 11:52:40 -08:00
Bobbin Threadbare
d59ffe274a
feat: add Debug and Clone derives for Falcon signature
2024-02-14 11:52:40 -08:00
Bobbin Threadbare
727ed8fb3e
docs: minor padding comment update
2024-02-14 11:52:40 -08:00
Al-Kindi-0
0acceaa526
fix: always pad bytes with 10*0 ( #267 )
2024-02-14 11:52:40 -08:00
Michael Birch
3882e0f719
fix(dsa): fix deserialization logic ( #266 )
2024-02-14 11:52:40 -08:00
Augusto F. Hack
70e39e7b39
partialmmr: Method add with support for a single peak and tracking
...
fixes : #258
2024-02-14 11:52:40 -08:00
Philippe Laferrière
5596db7868
Implement Smt
struct (replacement to TieredSmt
) ( #254 )
2024-02-14 11:52:40 -08:00
Bobbin Threadbare
a933ff2fa0
refactor: remove obsolete traits
2024-02-14 11:52:40 -08:00
Philippe Laferrière
8ea37904e3
Introduce SparseMerkleTree
trait ( #245 )
2024-02-14 11:52:40 -08:00
Augusto F. Hack
dae9de9068
docs: fix warnings
2024-02-14 11:52:40 -08:00
Bobbin Threadbare
7e9d4a4316
feat: add to_hex() to RpoDigest and RpxDigest
2024-02-14 11:52:40 -08:00
Al-Kindi-0
c9ab3beccc
New padding rule for RPX ( #236 )
...
* feat: new padding rule for RPX
* fix: documentation on security
2024-02-14 11:52:40 -08:00
cristiantroy
260592f8e7
Fix: typos ( #249 )
...
* tests: fix typos
* full.rs: fix typo
* CONTRIBUTING: fix typo
2024-02-14 11:52:40 -08:00
Bobbin Threadbare
6b5db8a6db
fix: clippy
2024-02-14 11:52:40 -08:00
Bobbin Threadbare
3ebee98b0f
feat: add PartialMmr::is_tracked()
2024-02-14 11:52:40 -08:00