Commit Graph

17 Commits

Author SHA1 Message Date
2a57e223ef Add TestAddBatchBench
TestAddBatchBench
	nCPU: 4, nLeafs: 50000, hash: Blake2b, db: leveldb
		Add loop:	9.304195479s
		AddBatch:	817.590526ms
2021-05-20 12:04:54 +02:00
13378d338e Remove cropping on pow of two the kvs for AddBatch
- Remove cropping on power of two the kvs for AddBatch
  - As not needed to be power of two length with the Virtual Tree
- Fix keyValuesToKvs keyPath
2021-05-19 12:58:11 +02:00
03bb9f7447 AddBatch use Virtual Tree for empty trees/subtrees
- AddBatch use Virtual Tree for cases A,B,C
- ImportDump use AddBatch instead of adding one by one
- Reorg & add more virtual tree tests
2021-05-18 10:57:06 +02:00
6dcbbdf4a5 Replace naive AddBatch by optimized AddBatch
- Replace naive AddBatch by optimized AddBatch
- Add blake2b hash support
- Expose needed methods for external usage (ReadLeafValue,
ReadIntermediateChilds)
- Return 'value' in GenProof
2021-05-08 17:08:07 +02:00
890057cd82 Add AddBatch CaseD
CASE D: Already populated Tree
==============================
- Use A, B, C, D as subtree
- Sort the Keys in Buckets that share the initial part of the path
- For each subtree add there the new leafs

              R
             /  \
            /    \
           /      \
          *        *
         / |      / \
        /  |     /   \
       /   |    /     \
L:    A    B   C       D
     /\   /\  / \     / \
    ...  ... ... ... ... ...
2021-04-25 17:55:56 +02:00
a4ada7e2ee Add CPU parallelization to buildTreBottomUp
buildTreeBottomUp splits the key-values into n Buckets (where n is the
number of CPUs), in parallel builds a subtree for each bucket, once all
the subtrees are built, uses the subtrees roots as keys for a new tree,
which as result will have the complete Tree build from bottom to up,
where until the log2(nCPU) level it has been computed in parallel.

As result of this, the tree construction can be parallelized until
almost the top level, almost dividing the time by the number of CPUs.
2021-04-25 17:55:56 +02:00
6f43980c0f Add Tree.emptyHash & nLeafs methods 2021-04-25 17:55:34 +02:00
8ede441191 Add Graphviz generation methods 2021-04-17 09:33:00 +02:00
c26b23c544 Add Mutex, integrate tx into Tree struct 2021-04-12 21:26:26 +02:00
8af921667f Add tree.Update(k, v) method 2021-04-03 19:58:34 +02:00
f8ac4be02b Tests migrate from stretchr/testify to frankban/quicktest 2021-04-03 19:40:18 +02:00
f1665b1a15 Add Iterate, Dump, ImportDump methods to Tree 2021-04-02 15:31:38 +02:00
cf572f628e Add tree.AddBatch (using db.Tx) 2021-04-01 16:36:58 +02:00
4cd2ff6182 Add tree.Get 2021-03-31 23:05:10 +02:00
bde87ca844 Add proof verification 2021-03-31 20:34:36 +02:00
8c63b5d192 Add proof generation 2021-03-31 20:04:30 +02:00
43cb6041c9 Add Tree.Add compatible with circomlib 2021-03-30 22:41:34 +02:00