mirror of
				https://source.quilibrium.com/quilibrium/ceremonyclient.git
				synced 2025-10-31 14:27:40 +00:00 
			
		
		
		
	
							parent
							
								
									1a244f5154
								
							
						
					
					
						commit
						d526ec63d0
					
				
							
								
								
									
										198
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										198
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							| @ -113,6 +113,17 @@ dependencies = [ | ||||
|  "nom", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "atty" | ||||
| version = "0.2.14" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" | ||||
| dependencies = [ | ||||
|  "hermit-abi 0.1.19", | ||||
|  "libc", | ||||
|  "winapi", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "autocfg" | ||||
| version = "1.3.0" | ||||
| @ -143,6 +154,12 @@ version = "0.5.1" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "f59bbe95d4e52a6398ec21238d31577f2b28a9d86807f06ca59d191d8440d0bb" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "bitflags" | ||||
| version = "1.3.2" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "block-buffer" | ||||
| version = "0.7.3" | ||||
| @ -168,7 +185,9 @@ dependencies = [ | ||||
| name = "bls48581" | ||||
| version = "0.1.0" | ||||
| dependencies = [ | ||||
|  "criterion 0.4.0", | ||||
|  "hex 0.4.3", | ||||
|  "rand", | ||||
|  "serde_json", | ||||
|  "uniffi", | ||||
| ] | ||||
| @ -268,6 +287,18 @@ dependencies = [ | ||||
|  "half", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "clap" | ||||
| version = "3.2.25" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" | ||||
| dependencies = [ | ||||
|  "bitflags", | ||||
|  "clap_lex 0.2.4", | ||||
|  "indexmap", | ||||
|  "textwrap", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "clap" | ||||
| version = "4.5.4" | ||||
| @ -286,7 +317,7 @@ checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" | ||||
| dependencies = [ | ||||
|  "anstream", | ||||
|  "anstyle", | ||||
|  "clap_lex", | ||||
|  "clap_lex 0.7.0", | ||||
|  "strsim", | ||||
| ] | ||||
| 
 | ||||
| @ -302,6 +333,15 @@ dependencies = [ | ||||
|  "syn", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "clap_lex" | ||||
| version = "0.2.4" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" | ||||
| dependencies = [ | ||||
|  "os_str_bytes", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "clap_lex" | ||||
| version = "0.7.0" | ||||
| @ -312,7 +352,7 @@ checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" | ||||
| name = "classgroup" | ||||
| version = "0.1.0" | ||||
| dependencies = [ | ||||
|  "criterion", | ||||
|  "criterion 0.5.1", | ||||
|  "libc", | ||||
|  "num-traits", | ||||
| ] | ||||
| @ -323,6 +363,32 @@ version = "1.0.1" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "criterion" | ||||
| version = "0.4.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb" | ||||
| dependencies = [ | ||||
|  "anes", | ||||
|  "atty", | ||||
|  "cast", | ||||
|  "ciborium", | ||||
|  "clap 3.2.25", | ||||
|  "criterion-plot", | ||||
|  "itertools", | ||||
|  "lazy_static", | ||||
|  "num-traits", | ||||
|  "oorandom", | ||||
|  "plotters", | ||||
|  "rayon", | ||||
|  "regex", | ||||
|  "serde", | ||||
|  "serde_derive", | ||||
|  "serde_json", | ||||
|  "tinytemplate", | ||||
|  "walkdir", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "criterion" | ||||
| version = "0.5.1" | ||||
| @ -332,7 +398,7 @@ dependencies = [ | ||||
|  "anes", | ||||
|  "cast", | ||||
|  "ciborium", | ||||
|  "clap", | ||||
|  "clap 4.5.4", | ||||
|  "criterion-plot", | ||||
|  "is-terminal", | ||||
|  "itertools", | ||||
| @ -429,6 +495,17 @@ dependencies = [ | ||||
|  "typenum", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "getrandom" | ||||
| version = "0.2.15" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" | ||||
| dependencies = [ | ||||
|  "cfg-if", | ||||
|  "libc", | ||||
|  "wasi", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "glob" | ||||
| version = "0.3.1" | ||||
| @ -456,6 +533,12 @@ dependencies = [ | ||||
|  "crunchy", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "hashbrown" | ||||
| version = "0.12.3" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "heck" | ||||
| version = "0.4.1" | ||||
| @ -468,6 +551,15 @@ version = "0.5.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "hermit-abi" | ||||
| version = "0.1.19" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" | ||||
| dependencies = [ | ||||
|  "libc", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "hermit-abi" | ||||
| version = "0.3.9" | ||||
| @ -486,13 +578,23 @@ version = "0.4.3" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "indexmap" | ||||
| version = "1.9.3" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" | ||||
| dependencies = [ | ||||
|  "autocfg", | ||||
|  "hashbrown", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "is-terminal" | ||||
| version = "0.4.12" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" | ||||
| dependencies = [ | ||||
|  "hermit-abi", | ||||
|  "hermit-abi 0.3.9", | ||||
|  "libc", | ||||
|  "windows-sys", | ||||
| ] | ||||
| @ -527,6 +629,12 @@ dependencies = [ | ||||
|  "wasm-bindgen", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "lazy_static" | ||||
| version = "1.5.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "libc" | ||||
| version = "0.2.155" | ||||
| @ -610,6 +718,12 @@ version = "0.2.3" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "os_str_bytes" | ||||
| version = "6.6.1" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "paste" | ||||
| version = "1.0.15" | ||||
| @ -650,6 +764,12 @@ dependencies = [ | ||||
|  "plotters-backend", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "ppv-lite86" | ||||
| version = "0.2.17" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "proc-macro2" | ||||
| version = "1.0.85" | ||||
| @ -668,6 +788,36 @@ dependencies = [ | ||||
|  "proc-macro2", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "rand" | ||||
| version = "0.8.5" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" | ||||
| dependencies = [ | ||||
|  "libc", | ||||
|  "rand_chacha", | ||||
|  "rand_core", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "rand_chacha" | ||||
| version = "0.3.1" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" | ||||
| dependencies = [ | ||||
|  "ppv-lite86", | ||||
|  "rand_core", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "rand_core" | ||||
| version = "0.6.4" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" | ||||
| dependencies = [ | ||||
|  "getrandom", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "rayon" | ||||
| version = "1.10.0" | ||||
| @ -833,6 +983,12 @@ dependencies = [ | ||||
|  "unicode-ident", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "textwrap" | ||||
| version = "0.16.1" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "thiserror" | ||||
| version = "1.0.61" | ||||
| @ -901,7 +1057,7 @@ checksum = "21345172d31092fd48c47fd56c53d4ae9e41c4b1f559fb8c38c1ab1685fd919f" | ||||
| dependencies = [ | ||||
|  "anyhow", | ||||
|  "camino", | ||||
|  "clap", | ||||
|  "clap 4.5.4", | ||||
|  "uniffi_bindgen", | ||||
|  "uniffi_build", | ||||
|  "uniffi_core", | ||||
| @ -918,7 +1074,7 @@ dependencies = [ | ||||
|  "askama", | ||||
|  "camino", | ||||
|  "cargo_metadata", | ||||
|  "clap", | ||||
|  "clap 4.5.4", | ||||
|  "fs-err", | ||||
|  "glob", | ||||
|  "goblin", | ||||
| @ -1037,7 +1193,7 @@ version = "0.1.0" | ||||
| dependencies = [ | ||||
|  "bit-vec", | ||||
|  "classgroup", | ||||
|  "criterion", | ||||
|  "criterion 0.5.1", | ||||
|  "hex 0.3.2", | ||||
|  "num-traits", | ||||
|  "sha2", | ||||
| @ -1060,6 +1216,12 @@ dependencies = [ | ||||
|  "winapi-util", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "wasi" | ||||
| version = "0.11.0+wasi-snapshot-preview1" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "wasm-bindgen" | ||||
| version = "0.2.92" | ||||
| @ -1133,6 +1295,22 @@ dependencies = [ | ||||
|  "nom", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "winapi" | ||||
| version = "0.3.9" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" | ||||
| dependencies = [ | ||||
|  "winapi-i686-pc-windows-gnu", | ||||
|  "winapi-x86_64-pc-windows-gnu", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "winapi-i686-pc-windows-gnu" | ||||
| version = "0.4.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "winapi-util" | ||||
| version = "0.1.8" | ||||
| @ -1142,6 +1320,12 @@ dependencies = [ | ||||
|  "windows-sys", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "winapi-x86_64-pc-windows-gnu" | ||||
| version = "0.4.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "windows-sys" | ||||
| version = "0.52.0" | ||||
|  | ||||
| @ -12,5 +12,13 @@ hex = "0.4.3" | ||||
| serde_json = "1.0.117" | ||||
| uniffi = {  version= "0.25", features = ["cli"]} | ||||
| 
 | ||||
| [dev-dependencies] | ||||
| criterion = { version = "0.4", features = ["html_reports"] } | ||||
| rand = "0.8.5" | ||||
| 
 | ||||
| [build-dependencies] | ||||
| uniffi = { version = "0.25", features = [ "build" ] } | ||||
| uniffi = { version = "0.25", features = [ "build" ] } | ||||
| 
 | ||||
| [[bench]] | ||||
| name = "bench_bls" | ||||
| harness = false | ||||
							
								
								
									
										20
									
								
								crates/bls48581/benches/bench_bls.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								crates/bls48581/benches/bench_bls.rs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,20 @@ | ||||
| use rand::Rng; | ||||
| use criterion::{black_box, criterion_group, criterion_main, Criterion}; | ||||
| 
 | ||||
| fn criterion_benchmark(c: &mut Criterion) { | ||||
|   bls48581::init(); | ||||
|   let mut bytes = vec![0u8; 65536]; | ||||
|   rand::thread_rng().fill(&mut bytes[..]); | ||||
|   
 | ||||
|   let mut group = c.benchmark_group("commit"); | ||||
|   group.sample_size(10); | ||||
|   group.bench_function("commit 16", |b| b.iter(|| black_box(bls48581::commit_raw(&bytes, 16)))); | ||||
|   group.bench_function("commit 128", |b| b.iter(|| black_box(bls48581::commit_raw(&bytes, 128)))); | ||||
|   group.bench_function("commit 256", |b| b.iter(|| black_box(bls48581::commit_raw(&bytes, 256)))); | ||||
|   group.bench_function("commit 1024", |b| b.iter(|| black_box(bls48581::commit_raw(&bytes, 1024)))); | ||||
|   group.bench_function("commit 65536", |b| b.iter(|| black_box(bls48581::commit_raw(&bytes, 65536)))); | ||||
|   group.finish(); | ||||
| } | ||||
| 
 | ||||
| criterion_group!(benches, criterion_benchmark); | ||||
| criterion_main!(benches); | ||||
| @ -49,35 +49,18 @@ fn recurse_fft( | ||||
|     fft_width: u64, | ||||
|     inverse: bool, | ||||
| ) { | ||||
|   let M = &big::BIG::new_ints(&rom::CURVE_ORDER); | ||||
|   let roots = if inverse { | ||||
|     &bls::singleton().ReverseRootsOfUnityBLS48581[&fft_width] | ||||
|   } else { | ||||
|     &bls::singleton().RootsOfUnityBLS48581[&fft_width] | ||||
|   }; | ||||
| 
 | ||||
|   if out.len() <= 16 { | ||||
|     let l = out.len() as u64; | ||||
|     for i in 0..l { | ||||
|       let mut last = big::BIG::modmul( | ||||
|         &values[offset as usize], | ||||
|         &roots[0], | ||||
|         &big::BIG::new_ints(&rom::CURVE_ORDER), | ||||
|       ); | ||||
| 
 | ||||
|       for j in 1..l { | ||||
|         let mid = big::BIG::modmul( | ||||
|           &values[(offset + j * stride) as usize], | ||||
|           &roots[((i * j) % l) as usize * roots_stride as usize], | ||||
|           &big::BIG::new_ints(&rom::CURVE_ORDER), | ||||
|         ); | ||||
|         last = big::BIG::modadd( | ||||
|           &last, | ||||
|           &mid, | ||||
|           &big::BIG::new_ints(&rom::CURVE_ORDER), | ||||
|         ); | ||||
|       } | ||||
|       out[i as usize] = last; | ||||
|     } | ||||
|   if out.len() == 1 { | ||||
|     // optimization: we're working in bls48-581, the first roots of unity
 | ||||
|     // value is always 1 no matter the fft width, so we can skip the
 | ||||
|     // multiplication:
 | ||||
|     out[0] = values[offset as usize].clone(); | ||||
|     return; | ||||
|   } | ||||
| 
 | ||||
| @ -107,26 +90,26 @@ fn recurse_fft( | ||||
| 
 | ||||
|   // cha cha now, y'all
 | ||||
|   for i in 0..half { | ||||
|       let mul = big::BIG::modmul( | ||||
|         &out[(i + half) as usize], | ||||
|         &roots[(i * roots_stride) as usize], | ||||
|         &big::BIG::new_ints(&rom::CURVE_ORDER), | ||||
|       ); | ||||
|       let mul_add = big::BIG::modadd( | ||||
|         &out[i as usize], | ||||
|         &mul, | ||||
|         &big::BIG::new_ints(&rom::CURVE_ORDER), | ||||
|       ); | ||||
|       out[(i + half) as usize] = big::BIG::modadd( | ||||
|         &out[i as usize], | ||||
|         &big::BIG::modneg(&mul, &big::BIG::new_ints(&rom::CURVE_ORDER)), | ||||
|         &big::BIG::new_ints(&rom::CURVE_ORDER), | ||||
|       ); | ||||
|       out[i as usize] = mul_add; | ||||
|     let mul = big::BIG::modmul( | ||||
|       &out[(i + half) as usize], | ||||
|       &roots[(i * roots_stride) as usize], | ||||
|       &big::BIG::new_ints(&rom::CURVE_ORDER), | ||||
|     ); | ||||
|     let mul_add = big::BIG::modadd( | ||||
|       &out[i as usize], | ||||
|       &mul, | ||||
|       &big::BIG::new_ints(&rom::CURVE_ORDER), | ||||
|     ); | ||||
|     out[(i + half) as usize] = big::BIG::modadd( | ||||
|       &out[i as usize], | ||||
|       &big::BIG::modneg(&mul, &big::BIG::new_ints(&rom::CURVE_ORDER)), | ||||
|       &big::BIG::new_ints(&rom::CURVE_ORDER), | ||||
|     ); | ||||
|     out[i as usize] = mul_add; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| fn fft( | ||||
| pub fn fft( | ||||
|   values: &[big::BIG], | ||||
|   fft_width: u64, | ||||
|   inverse: bool, | ||||
| @ -183,21 +166,8 @@ fn recurse_fft_g1( | ||||
|     &bls::singleton().RootsOfUnityBLS48581[&fft_width] | ||||
|   }; | ||||
| 
 | ||||
|   if out.len() <= 16 { | ||||
|     let l = out.len() as u64; | ||||
|     for i in 0..l { | ||||
|       let mut last = ecp::ECP::mul(&values[offset as usize].clone(), &roots[0]); | ||||
| 
 | ||||
|       for j in 1..l { | ||||
|         let mid = ecp::ECP::mul( | ||||
|           &values[(offset + j * stride) as usize].clone(), | ||||
|           &roots[((i * j) % l) as usize * roots_stride as usize], | ||||
|         ); | ||||
|         &last.add(&mid); | ||||
|       } | ||||
| 
 | ||||
|       out[i as usize] = last.clone(); | ||||
|     } | ||||
|   if out.len() == 1 { | ||||
|     out[0] = values[offset as usize].clone(); | ||||
|     return; | ||||
|   } | ||||
| 
 | ||||
| @ -227,7 +197,9 @@ fn recurse_fft_g1( | ||||
| 
 | ||||
|   // cha cha now, y'all
 | ||||
|   for i in 0..half { | ||||
|     let mul = out[(i + half) as usize].clone().mul(&roots[(i * roots_stride) as usize].clone()); | ||||
|     let mul = out[(i + half) as usize].clone().mul( | ||||
|       &roots[(i * roots_stride) as usize].clone(), | ||||
|     ); | ||||
|     let mut mul_add = out[i as usize].clone(); | ||||
|     mul_add.add(&mul.clone()); | ||||
|     out[(i + half) as usize] = out[i as usize].clone(); | ||||
| @ -236,7 +208,7 @@ fn recurse_fft_g1( | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| fn fft_g1( | ||||
| pub fn fft_g1( | ||||
|   values: &[ecp::ECP], | ||||
|   fft_width: u64, | ||||
|   inverse: bool, | ||||
| @ -291,7 +263,7 @@ fn bytes_to_polynomial( | ||||
|   let size = bytes.len() / 64; | ||||
|   let trunc_last = bytes.len() % 64 > 0; | ||||
| 
 | ||||
|   let mut poly = Vec::new(); | ||||
|   let mut poly = Vec::with_capacity(size + (if trunc_last { 1 } else { 0 })); | ||||
| 
 | ||||
|   for i in 0..size { | ||||
|     let scalar = big::BIG::frombytes(&bytes[i * 64..(i + 1) * 64]); | ||||
| @ -306,8 +278,8 @@ fn bytes_to_polynomial( | ||||
|   return poly; | ||||
| } | ||||
| 
 | ||||
| fn point_linear_combination( | ||||
|   points: &Vec<&ecp::ECP>, | ||||
| pub fn point_linear_combination( | ||||
|   points: &[ecp::ECP], | ||||
|   scalars: &Vec<big::BIG>, | ||||
| ) -> Result<ecp::ECP, Box<dyn Error>> { | ||||
|   if points.len() != scalars.len() { | ||||
| @ -318,14 +290,7 @@ fn point_linear_combination( | ||||
|     ).into()); | ||||
|   } | ||||
| 
 | ||||
|   let mut result = ecp::ECP::new(); | ||||
| 
 | ||||
|   for (i, point) in points.iter().enumerate() { | ||||
|     let c = point.clone(); | ||||
|     let p = c.mul(&scalars[i]); | ||||
|     
 | ||||
|     &result.add(&p); | ||||
|   } | ||||
|   let result = ecp::ECP::muln(points.len(), points, scalars.as_slice()); | ||||
| 
 | ||||
|   Ok(result) | ||||
| } | ||||
| @ -362,7 +327,7 @@ pub fn commit_raw( | ||||
|     poly.push(big::BIG::new()); | ||||
|   } | ||||
|   match point_linear_combination( | ||||
| 		&bls::singleton().FFTBLS48581[&poly_size].iter().collect(), | ||||
| 		&bls::singleton().FFTBLS48581[&poly_size], | ||||
| 		&poly, | ||||
| 	) { | ||||
|     Ok(commit) => { | ||||
| @ -440,7 +405,7 @@ pub fn prove_raw( | ||||
|       } | ||||
|     
 | ||||
|       match point_linear_combination( | ||||
|         &bls::singleton().CeremonyBLS48581G1[..(poly_size as usize - 1)].iter().collect(), | ||||
|         &bls::singleton().CeremonyBLS48581G1[..(poly_size as usize - 1)], | ||||
|         &out, | ||||
|       ) { | ||||
|         Ok(proof) => { | ||||
| @ -483,4 +448,29 @@ pub fn verify_raw( | ||||
| 
 | ||||
| pub fn init() { | ||||
|   bls::singleton(); | ||||
| } | ||||
| 
 | ||||
| #[cfg(test)] | ||||
| mod tests { | ||||
|     use ecp::ECP; | ||||
| 
 | ||||
|     use super::*; | ||||
| 
 | ||||
|     #[test] | ||||
|     fn fft_matches_fft_g1_when_raised() { | ||||
|       init(); | ||||
|       let mut rand = rand::RAND::new(); | ||||
|       let mut v = vec![big::BIG::new(); 16]; | ||||
|       let mut vp = vec![ECP::new(); 16]; | ||||
|       for i in 0..16 { | ||||
|         v[i] = big::BIG::random(&mut rand); | ||||
|         vp[i] = ECP::generator().mul(&v[i]); | ||||
|       } | ||||
|       let scalars = fft(v.as_slice(), 16, false).unwrap(); | ||||
|       let points = fft_g1(vp.as_slice(), 16, false).unwrap(); | ||||
|       for (i, s) in scalars.iter().enumerate() { | ||||
|         let sp = ECP::generator().mul(&s); | ||||
|         assert!(points[i].equals(&sp)); | ||||
|       } | ||||
|     } | ||||
| } | ||||
| @ -725,11 +725,11 @@ func logoVersion(width int) string { | ||||
| 		out += "                          ''---..              ...---''               ##\n" | ||||
| 		out += "                                 ''----------''\n" | ||||
| 		out += " \n" | ||||
| 		out += "                       Quilibrium Node - v" + config.GetVersionString() + " – Solstice\n" | ||||
| 		out += "                       Quilibrium Node - v" + config.GetVersionString() + " – Centauri\n" | ||||
| 		out += " \n" | ||||
| 		out += "                                   DB Console\n" | ||||
| 	} else { | ||||
| 		out = "Quilibrium Node - v" + config.GetVersionString() + " – Solstice - DB Console\n" | ||||
| 		out = "Quilibrium Node - v" + config.GetVersionString() + " – Centauri - DB Console\n" | ||||
| 	} | ||||
| 	return out | ||||
| } | ||||
|  | ||||
| @ -38,4 +38,6 @@ type P2PConfig struct { | ||||
| 	TraceLogFile              string        `yaml:"traceLogFile"` | ||||
| 	MinPeers                  int           `yaml:"minPeers"` | ||||
| 	Network                   uint8         `yaml:"network"` | ||||
| 	LowWatermarkConnections   uint          `yaml:"lowWatermarkConnections"` | ||||
| 	HighWatermarkConnections  uint          `yaml:"highWatermarkConnections"` | ||||
| } | ||||
|  | ||||
| @ -14,7 +14,7 @@ func GetMinimumVersion() []byte { | ||||
| } | ||||
| 
 | ||||
| func GetVersion() []byte { | ||||
| 	return []byte{0x01, 0x04, 0x14} | ||||
| 	return []byte{0x01, 0x04, 0x15} | ||||
| } | ||||
| 
 | ||||
| func GetVersionString() string { | ||||
| @ -36,5 +36,5 @@ func FormatVersion(version []byte) string { | ||||
| } | ||||
| 
 | ||||
| func GetPatchNumber() byte { | ||||
| 	return 0x01 | ||||
| 	return 0x00 | ||||
| } | ||||
|  | ||||
| @ -6,7 +6,7 @@ import ( | ||||
| 
 | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"source.quilibrium.com/quilibrium/monorepo/nekryptology/pkg/core/curves" | ||||
| 	"source.quilibrium.com/quilibrium/monorepo/node/crypto" | ||||
| 	crypto "source.quilibrium.com/quilibrium/monorepo/node/crypto/channel" | ||||
| ) | ||||
| 
 | ||||
| func TestFeldman(t *testing.T) { | ||||
|  | ||||
| @ -933,5 +933,5 @@ func printVersion() { | ||||
| 		patchString = fmt.Sprintf("-p%d", patch) | ||||
| 	} | ||||
| 	fmt.Println(" ") | ||||
| 	fmt.Println("                      Quilibrium Node - v" + config.GetVersionString() + patchString + " – Solstice") | ||||
| 	fmt.Println("                      Quilibrium Node - v" + config.GetVersionString() + patchString + " – Centauri") | ||||
| } | ||||
|  | ||||
| @ -23,6 +23,7 @@ import ( | ||||
| 	"github.com/libp2p/go-libp2p/p2p/discovery/routing" | ||||
| 	"github.com/libp2p/go-libp2p/p2p/discovery/util" | ||||
| 	"github.com/libp2p/go-libp2p/p2p/host/peerstore/pstoreds" | ||||
| 	"github.com/libp2p/go-libp2p/p2p/net/connmgr" | ||||
| 	"github.com/mr-tron/base58" | ||||
| 	"github.com/multiformats/go-multiaddr" | ||||
| 	"github.com/pkg/errors" | ||||
| @ -63,7 +64,7 @@ var BITMASK_ALL = []byte{ | ||||
| // While we iterate through these next phases, we're going to aggressively
 | ||||
| // enforce keeping updated. This will be achieved through announce strings
 | ||||
| // that will vary with each update
 | ||||
| var ANNOUNCE_PREFIX = "quilibrium-1.4.20-solstice-" | ||||
| var ANNOUNCE_PREFIX = "quilibrium-1.4.21-centauri-" | ||||
| 
 | ||||
| func getPeerID(p2pConfig *config.P2PConfig) peer.ID { | ||||
| 	peerPrivKey, err := hex.DecodeString(p2pConfig.PeerPrivKey) | ||||
| @ -150,6 +151,19 @@ func NewBlossomSub( | ||||
| 
 | ||||
| 	opts = append(opts, libp2p.Peerstore(ps)) | ||||
| 
 | ||||
| 	if p2pConfig.LowWatermarkConnections != 0 && | ||||
| 		p2pConfig.HighWatermarkConnections != 0 { | ||||
| 		cm, err := connmgr.NewConnManager( | ||||
| 			int(p2pConfig.LowWatermarkConnections), | ||||
| 			int(p2pConfig.HighWatermarkConnections), | ||||
| 			connmgr.WithEmergencyTrim(true), | ||||
| 		) | ||||
| 		if err != nil { | ||||
| 			panic(err) | ||||
| 		} | ||||
| 		opts = append(opts, libp2p.ConnectionManager(cm)) | ||||
| 	} | ||||
| 
 | ||||
| 	bs := &BlossomSub{ | ||||
| 		ctx:             ctx, | ||||
| 		logger:          logger, | ||||
| @ -189,11 +203,6 @@ func NewBlossomSub( | ||||
| 	} | ||||
| 
 | ||||
| 	blossomOpts := []blossomsub.Option{} | ||||
| 	if isBootstrapPeer { | ||||
| 		blossomOpts = append(blossomOpts, | ||||
| 			blossomsub.WithPeerExchange(true), | ||||
| 		) | ||||
| 	} | ||||
| 
 | ||||
| 	if tracer != nil { | ||||
| 		blossomOpts = append(blossomOpts, blossomsub.WithEventTracer(tracer)) | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Cassandra Heart
						Cassandra Heart