* implement merkletree insert & insert-proof-verification * add merkletree circuit to verify insertion proof wip * fix merkletree's GraphViz generation for cases with empty siblings * implement tree insert-verif circuit siblings checks Note: I've implemented also an alternative version which instead of inputting a witness value 'divergence_level' it inputs a bitmask. Both approaches (divergence_level and divergence_bitmask) take the same amount of constraints (336 constraints for a tree of 32 levels, and for an hybrid approach it takes 331 constraints but the code gets a bit less readable). So I've kept with the current implementation (using divergence_level) which is more easy to follow. * [tree] modify the strategy for the insert-proof (out-circuit) * re-implement insert-proof verification circuit * add pending checks and polish * add tests for disabled(&enabled) cases that should fail * update typos.toml config * Add test with tampering * add check 5.3, to prevent tampering (at insertion proof circuit) * move old_leaf_hash computation outside the loop, simplify check 5.3 booleans * apply @ed255 review suggestions --------- Co-authored-by: Ahmad <root@ahmadafuni.com>
11 lines
430 B
TOML
11 lines
430 B
TOML
[default.extend-words]
|
|
groth = "groth" # to avoid it dectecting it as 'growth'
|
|
BA = "BA"
|
|
Ded = "Ded" # "ANDed", it thought "Ded" should be "Dead"
|
|
OT = "OT"
|
|
aks = "aks" # anchored keys
|
|
nin = "nin" # not in
|
|
kow = "kow" # key or wildcard
|
|
KOW = "KOW" # Key Or Wildcard
|
|
datas = "datas" # plural (for 'verifier_datas', a vector of 'verifier_data')
|
|
typ = "typ" # from 'type', which can not be used as variable name since it is a keyword
|