mirror of
https://github.com/QuilibriumNetwork/ceremonyclient.git
synced 2026-02-21 18:37:26 +08:00
* experiment: reject bad peer info messages * v2.1.0.18 preview * add tagged sync * Add missing hypergraph changes * small tweaks to sync * allow local sync, use it for provers with workers * missing file * resolve build error * resolve sync issue, remove raw sync * resolve deletion promotion bug * resolve sync abstraction leak from tree deletion changes * rearrange prover sync * remove pruning from sync * restore removed sync flag * fix: sync, event stream deadlock, heuristic scoring of better shards * resolve hanging shutdown + pubsub proxy issue * further bugfixes: sync (restore old leaf sync), pubsub shutdown, merge events * fix: clean up rust ffi, background coverage events, and sync tweaks * fix: linking issue for channel, connectivity test aggression, sync regression, join tests * fix: disjoint sync, improper application of filter * resolve sync/reel/validation deadlock * adjust sync to handle no leaf edge cases, multi-path segment traversal * use simpler sync * faster, simpler sync with some debug extras * migration to recalculate * don't use batch * square up the roots * fix nil pointer * fix: seniority calculation, sync race condition, migration * make sync dumber * fix: tree deletion issue * fix: missing seniority merge request canonical serialization * address issues from previous commit test * stale workers should be cleared * remove missing gap check * rearrange collect, reduce sync logging noise * fix: the disjoint leaf/branch sync case * nuclear option on sync failures * v2.1.0.18, finalized |
||
|---|---|---|
| .. | ||
| cmake | ||
| emp-tool | ||
| test | ||
| .gitignore | ||
| CMakeLists.txt | ||
| LICENSE | ||
| NOTICE | ||
| README.md | ||
| run | ||
emp-tool
Installation
wget https://raw.githubusercontent.com/emp-toolkit/emp-readme/master/scripts/install.pypython install.py --deps --tool- You can use
--ot=[release]to install a particular branch or release - By default it will build for Release.
-DCMAKE_BUILD_TYPE=[Release|Debug]option is also available. - No sudo? Change
CMAKE_INSTALL_PREFIX.
- You can use
Usage
Basic Primitives
Pseudorandom generator
PRG is implemented as AES-NI in the CTR mode. Usage is presented as the following code sample.
#include<emp-tool/emp-tool.h>
using namespace emp;
PRG prg;//using a secure random seed
int rand_int, rand_ints[100];
block rand_block[3];
prg.random_data(&rand_int, sizeof(rand_int)); //fill rand_int with 32 random bits
prg.random_block(rand_block, 3); //fill rand_block with 128*3 random bits
prg.reseed(&rand_block[1]); //reset the seed and counter in prg
prg.random_data_unaligned(rand_ints+2, sizeof(int)*98); //when the array is not 128-bit-aligned
Pseudorandom permutation
PRP is implemented based on AES-NI. Code sample:
block key;
PRG().random_block(&key,1)
PRP prp(key); //if no parameter is provided, a public, fixed key will be used
block rand_block[3], b3[3];
int rand_ints[100];
prp.permute_block(rand_block, 3);//applying pi on each block of data
prp.permute_data(rand_ints, sizeof(int)*100);
block b2 = prp.H(rand_block[1], 1); //b2 = pi(r)\xor r, where r = doubling(random_block)\xor 1
prp.H<3>(b3, rand_block, 0);// apply the above H on three blocks using counter 0, 1, and 2 resp.
Hash function
Essentially a wrapper of <openssl/sha.h>
Hash hash;
char * data = new char[1024*1024], dig[Hash::DIGEST_SIZE];
hash.put(data, 1024*1024);
hash.digest(dig);
Commitment
Commitment c;
char * data = new char[1024*1024];
Com com;
Decom decom;
c.commit(decom, com, data, 1024*1024); // commit, will fill values decom and com
assert(c.open(decom, com, data, 1024*1024)); // open, return if the decommitment is valid or not