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