-
-
Notifications
You must be signed in to change notification settings - Fork 3.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[WIP] full-chain membership proof++ integration #9436
Draft
j-berman
wants to merge
127
commits into
monero-project:master
Choose a base branch
from
j-berman:fcmp++
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Changes from 98 commits
Commits
Show all changes
127 commits
Select commit
Hold shift + click to select a range
e1c03f4
rough fcmp++ tree impl (lots of work remaining to clean it up and fix)
j-berman 1ba876b
remove whitespaces
j-berman 9e6b93b
test validates lowest layer in tree
j-berman 33ad50b
fix c1 c2 layer indexing issue in test helper get_last_chunk
j-berman c05bd80
actual indexing fix, tests now passing
j-berman ad8872a
Cleaner file organization
j-berman 5103a94
template all curve_trees types & funcs, rename tower_cycle_types to t…
j-berman d9390c7
Implement CurveTrees & CurveTreesUnitTest classes to simplify callers
j-berman 29e0fe7
Add Curve class, and Helios & Selene classes that derive from Curve
j-berman 9e68475
Use widths from fcmp++ repo test & align tests with width
j-berman 26009ba
slight simplification to CurveTrees::hash_layer
j-berman 4ade675
Consolidate hash_leaf_layer into hash_layer
j-berman 9ba00be
Move curve_trees.h implementations into curve_trees.cpp file
j-berman 5ad0269
Cleaner template usage, moved static functions out of CurveTrees class
j-berman e68ea2e
small cleanup
j-berman af9b74f
start LMDB grow_tree
j-berman af47a13
Remove cxx and expose scalars/points directly
kayabaNerve 42f6ef2
fmt, clippy
kayabaNerve c792b21
Use statics on the Rust side for generators
kayabaNerve effa9ee
Only pass a single prior child
kayabaNerve 517f5a3
don't want to expose generator lengths in ffi
j-berman a1ee603
explicit type response to hash_grow 's
j-berman 988c4ea
Remove reference from m_hash_init_point
kayabaNerve ab7c741
Simplify edge case handling in hash_layer
j-berman 1ffde09
Implement get_tree_last_chunks in db, can now extend tree in db
j-berman 6045357
implement db->audit_tree, and flesh out db test to init/extend tree
j-berman 17b1f42
cleaner lmdb test structure for curve trees
j-berman c7c6c6a
CurveTreesUnitTest -> CurveTreesGlobalTree class
j-berman ae89fdd
Set up trim_tree_in_memory test
j-berman e8af709
expose and test hash_trim from rust lib
j-berman ed040ca
implement trim_tree_in_memory
j-berman 8287ba6
faster trim_tree tests
j-berman 36f1e19
Fix grow_tree, restructure it, and clean the approach
j-berman 5ddca0c
Implement and test trim_tree algo in memory
j-berman 4be2d7c
whitespace fixes
j-berman 55caee9
Better tests for hash_trim
j-berman 42fd22c
Better organization
j-berman f50ad5b
trim_tree db impl + db test + some housekeeping
j-berman 8a89c20
lmdb migration to init curve trees tree from existing outputs
j-berman 306488b
Implemented growing the tree on sync + lots of cleaning
j-berman 634e12e
Guarantee insertion order into the tree using global output ID
j-berman 93795b4
Match output unlock time (fix off by 1)
j-berman db12610
Remove leaves from locked leaves table upon insertion to tree
j-berman b585a7f
Remove copy in get_tree_extension and better named funcs
j-berman af4de99
Use a pointer for the value in CResult
kayabaNerve d6ca636
use void * to try to fix CResult
j-berman 8b76958
Rust cross compilation
kayabaNerve 389274a
Correct path to the staticlib
kayabaNerve 75faba1
Increase misc discrepancies in ARM ARCH spec which we support
kayabaNerve 8b279a0
i386 -> i686, riscv64 -> riscv64gc
kayabaNerve 8c47c0d
Further match off RUST_ARCH, not ARCH_ID
kayabaNerve 03679d1
Install Rust when doing the Windows build
kayabaNerve e5ed232
Use the armv7 HF Rust toolchain
kayabaNerve d69e6bd
Install Rust via the msys2 package on Windows (not the unavailable ru…
kayabaNerve 0620be1
Cross-compile from Ubuntu 22.04
kayabaNerve 38f1935
Ubuntu 20.04, Rust 1.72
kayabaNerve 5d6a7fd
_x86_64 -> -x86_64
kayabaNerve 8664736
Normalize x86-64 to x86_64
kayabaNerve 170324a
Rust 1.69
kayabaNerve 98569b0
LTO off
kayabaNerve 6d6a2e4
Correct typo in MATCHES statement
kayabaNerve c6327cc
Correct in-tree code to Rust 1.69
kayabaNerve 8eb3f29
Link additional libs on Windows
kayabaNerve da9f101
Abort on panic, fix 32-bit Windows undefined reference
kayabaNerve 16536f3
Only provide dummy _Unwind_Resume on x86 Windows
kayabaNerve 1a44ceb
Link additional libs on Windows (yet actually adding the relevant cha…
kayabaNerve 23be5f6
Use a single target_link_libraries call
kayabaNerve aadea07
Touch up merge for cross-compilation fixes
j-berman 420b4b6
Resolve cross-compile errors
j-berman d36b6fe
resolve rebase to master issues
j-berman c383087
Instantiate m_curve_trees on BlockchainLMDB class in c'tor
j-berman 729e31d
include fcmp/curve_trees.h in db_lmdb.h
j-berman 16a8ce3
Add * point from bytes
kayabaNerve 54d5d0d
fcmp++: add support for new fcmp types in cryptonote::transaction
j-berman e40c5bb
fix json tagging in fcmp_pp serialization
j-berman 95114f9
Use explicit code instead of macro in custom fcmp_pp serialization
j-berman 34eafa8
Store points in the tree in compressed encoding (32 bytes)
j-berman b90cee8
Store {O,C} for each leaf tuple instead of {O.x,I.x,C.x}
j-berman cbf6a5d
Optimize conversion from output to leaf tuple
j-berman 30fc80b
Don't copy when flattening leaves
j-berman 5e76191
cleaner crypto for converting output to leaf tuple
j-berman edded7e
fcmp++: Restart migration from where it leaves off
j-berman 10c6c12
fcmp++: compilation fixes + misc. cleanup
j-berman 3a5cf70
32-bit platform compatibility in Rust FFI (untested)
j-berman d72f405
Revert DELETE_DB macro to original spot
j-berman d4847f6
Rename everything from fcmp* to fcmp_pp
j-berman 9f0dd85
fix clang compile errors
j-berman 8b12a33
fcmp++: implement iterative audit_tree function
j-berman f17db01
fcmp++: store {output pubkey, commitment} in db, pre-torsion clear
j-berman 9ad4918
link correct cncrypto and ringct_basic libs
j-berman b6bcca9
Remove ringct dep in fcmp_pp, impl in fcmp_pp_crypto
j-berman 7389cb6
add missing files
j-berman 6525df1
Don't store output_id in locked_outpust table, table stays ordered
j-berman 83d5659
Clean lmbd impl
j-berman 67f5546
lmdb touchup && OutputsByUnlockBlock map -> unordered_map
j-berman 918befb
new_leaf_tuples -> new_outputs
j-berman ee19361
Remove extra gcc install fixes windows build
j-berman 47d47bd
fcmp++: proof len from inputs *AND merkle tree depth
j-berman 41b1985
Fix compile on arm-linux-androideabi (32-bit) using a newer NDK
j-berman 16ff6a9
fcmp++: trim tree when removing a block
j-berman 0a604a9
fcmp++: Enable trimming to empty tree
j-berman acc7d05
fcmp++ LMDB: use dummy key optimization on leaves table
j-berman 2890e8c
fcmp++: LMDB touchups
j-berman 072a82d
fcmp++: tests now test trimming to empty tree
j-berman 0688538
fcmp++: add test to trim the tree then grow again after trimming
j-berman b71f244
fcmp++: better test names
j-berman 0ff1eaf
Use macro to de-dupe curve trees test logic
j-berman 9784ced
fcmp++ tests: init tree once in memory and grow copy
j-berman f47c60e
fcmp++ tests: init tree in db once, then copy db for tests
j-berman e636c38
fix ubuntu 20 compile
j-berman 90164e3
fcmp++: multithreaded hashing children chunks into tree
j-berman 8fc87d7
fcmp++: multithreaded convert valid outputs into leaf tuples
j-berman b055eb3
fcmp++: output may not be present in locked outputs table on remove
j-berman 0435974
fcmp++ lmdb: migration touchups
j-berman 7fa01d2
fcmp++: key image migration
j-berman 5f4b20b
fcmp++: fix build errs for ki_context_t hash specialization
j-berman 358a66f
crypto: fe_batch_invert using Montgomery's trick
j-berman b2ea862
fcmp++: use batch inversion when converting outputs to leaf tupels
j-berman 330b82f
Fix build errs + warnings
j-berman 21664f9
fcmp++: use fe * instead of vector<fe> + clean up
j-berman 513dae8
small touchups
j-berman da710fc
crypto: test more batch inversions
j-berman a74f7ae
fcmp++: rename "PreWeiX" -> "EdYDerivatives" + small touchups
j-berman 901cc87
missing ref
j-berman 036fc2a
fcmp++ tests: set up test for prove
j-berman 1241172
fcmp++: fix trim_tree get_trim_layer_instructions logic err
j-berman 3ac3e53
fcmp++: fix migration batching to resize db as needed
j-berman File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah this stuff too should go into a "General Rust FFI" PR IMO