mirror of
https://github.com/QuilibriumNetwork/ceremonyclient.git
synced 2026-03-06 00:37:42 +08:00
commit d05a4d5f688dbd09900ceccdcc5f8109dd0671c2
Author: Cassandra Heart <cassandra@quilibrium.com>
Date: Wed Jun 12 00:50:16 2024 -0500
merge
commit db57ff1f191f9dedc87ca77da1c71244dd2325bd
Merge: 7b43494 2e3279a
Author: Cassandra Heart <cassandra@quilibrium.com>
Date: Wed Jun 12 00:49:32 2024 -0500
Merge branch 'v1.4.19' into not-release
commit 7b43494246e28152b46710c8c9821429d4231f7e
Author: Cassandra Heart <cassandra@quilibrium.com>
Date: Wed Jun 12 00:49:13 2024 -0500
pull from release site
commit 2e3279ac930ac630d9ca2b26cf4f3232abe79823
Author: Cassandra Heart <cassandra@quilibrium.com>
Date: Sat Jun 8 06:31:02 2024 -0500
remove binaries
commit 2768a8778b3860c5736352c8aa950e3496a46e56
Author: Cassandra Heart <cassandra@quilibrium.com>
Date: Sat Jun 8 06:24:44 2024 -0500
signatory #8 added
commit 6a944628575ccadd17c9f9f4a11a49c032fa0c1d
Author: Cassandra Heart <cassandra@quilibrium.com>
Date: Sat Jun 8 06:08:26 2024 -0500
signatory #6 added
commit b401fb65e5ddbe0340fe85aab1182d6120a4e161
Author: Cassandra Heart <cassandra@quilibrium.com>
Date: Sat Jun 8 05:39:03 2024 -0500
signatory #3 added
commit e5700913c0f6246fb607bcd3e219c257cb4a80e9
Author: Cassandra Heart <cassandra@quilibrium.com>
Date: Sat Jun 8 05:31:24 2024 -0500
signatory #15 added
commit 9b1da6c03e517135bfcd59226f900adab42f3687
Author: Cassandra Heart <cassandra@quilibrium.com>
Date: Sat Jun 8 05:23:02 2024 -0500
signatories #4 and #16 added
commit 9c97d1bbc399a070ac21b35ed9b1af127fa4c7ea
Author: Cassandra Heart <cassandra@quilibrium.com>
Date: Sat Jun 8 04:59:27 2024 -0500
signatories #1 and #2 added
commit 905e3f78a8121eade1c331ae910ed25dd534f27a
Author: Cassandra Heart <cassandra@quilibrium.com>
Date: Sat Jun 8 04:40:32 2024 -0500
build, binaries, signatory #13
commit ebfb57bc29d9ed1fb25d0dd100e38709354b3d84
Author: Cassandra Heart <cassandra@quilibrium.com>
Date: Sat Jun 8 03:38:53 2024 -0500
tests pass, let's go
commit 5d4612c6c624c3dc18f9a5657936034ac9d9d8dd
Author: Cassandra Heart <cassandra@quilibrium.com>
Date: Fri Jun 7 03:53:15 2024 -0500
update version info + readme
commit 6b0dd69e930d01b98acb8d7b56bb5d572e1a4324
Merge: 090d630 859221b
Author: Cassie Heart <cassandra@quilibrium.com>
Date: Fri Jun 7 08:25:16 2024 +0000
Merge branch 'feat-data-worker-direct-config' into 'v1.4.19'
feat: support detached configuration mode for data workers
See merge request quilibrium/ceremonyclient!7
commit 859221b179ab2631fa474be2494259afaaa6bd51
Author: Cassandra Heart <cassandra@quilibrium.com>
Date: Fri Jun 7 03:24:22 2024 -0500
feat: support detached configuration mode for data workers
commit 090d6301d44a2aa88886120783cd5a6e537aa6d1
Merge: 62db30c d1cae94
Author: Cassie Heart <cassandra@quilibrium.com>
Date: Fri Jun 7 06:25:43 2024 +0000
Merge branch 'feat-go-1-22' into 'v1.4.19'
feat: go 1.22 support
See merge request quilibrium/ceremonyclient!6
commit d1cae942165f4871f8051e266722c0ca717780cb
Author: Cassie Heart <cassandra@quilibrium.com>
Date: Fri Jun 7 06:25:43 2024 +0000
feat: go 1.22 support
commit 62db30c54f9258c92113c6664ce817670a339083
Merge: 0cbc0d0 f36cea3
Author: Cassie Heart <cassandra@quilibrium.com>
Date: Fri Jun 7 03:52:17 2024 +0000
Merge branch 'rust-vdf' into 'v1.4.19'
Switch to Rust VDF
See merge request quilibrium/ceremonyclient!2
commit f36cea323bfe5e56f519f59f9a0cce35f0f8b6ab
Author: Agost Biro <agostbiro@gmail.com>
Date: Fri Jun 7 03:52:16 2024 +0000
Switch to Rust VDF
commit 0cbc0d0d319713e20ca7f48588c4153833e58429
Merge: 986e12c 0c48a83
Author: Cassie Heart <cassandra@quilibrium.com>
Date: Fri Jun 7 00:50:15 2024 +0000
Merge branch 'release_image' into 'v1.4.19'
create docker image based on release binaries
See merge request quilibrium/ceremonyclient!4
commit 0c48a83bb5751abf7c8c0ff188bfdc2130631e78
Author: Marius Scurtescu <marius.scurtescu@gmail.com>
Date: Fri Jun 7 00:50:15 2024 +0000
create docker image based on release binaries
commit 986e12c88bb2d2b412b59f7db1ae39f828304dbe
Merge: 58456c1 a3ef5c6
Author: Cassie Heart <cassandra@quilibrium.com>
Date: Wed Jun 5 22:01:37 2024 +0000
Merge branch 'signature_check' into 'v1.4.19'
add default of signature check from QUILIBRIUM_SIGNATURE_CHECK env var
See merge request quilibrium/ceremonyclient!1
commit a3ef5c6af2d5de107d01c45a62d7324165e2551b
Author: Marius Scurtescu <marius.scurtescu@gmail.com>
Date: Wed Jun 5 14:37:50 2024 -0700
add default of signature check from QUILIBRIUM_SIGNATURE_CHECK env var
116 lines
3.9 KiB
Rust
116 lines
3.9 KiB
Rust
// Copyright 2018 Chia Network Inc and POA Networks Ltd.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
use std::{env, fs::File, io::Write, path::PathBuf, u16};
|
|
|
|
/// The number of odd primes less than 65536.
|
|
const PRIMES_LEN: usize = 6541;
|
|
|
|
/// The number of integers that are:
|
|
///
|
|
/// * equal to 7 mod 8
|
|
/// * not divisible by any prime number less than or equal to 13.
|
|
/// * less than 8 * 3 * 5 * 7 * 11 * 13
|
|
const RESIDUES_LEN: usize = 5760;
|
|
|
|
/// The number of odd prime numbers between 13 and 65536 exclusive.
|
|
const SIEVE_INFO_LEN: usize = PRIMES_LEN - 5;
|
|
|
|
fn odd_primes_below_65536() -> Vec<usize> {
|
|
const N: usize = 1 << 16;
|
|
let mut sieve = vec![true; N >> 1];
|
|
let mut q = (N as f64).powf(0.5) as usize;
|
|
assert!(q * q <= N);
|
|
q += 1;
|
|
assert!(q * q > N);
|
|
for i in (3..q).step_by(2) {
|
|
if sieve[i >> 1] {
|
|
for i in ((i * i >> 1)..sieve.len()).step_by(i) {
|
|
sieve[i] = false;
|
|
}
|
|
}
|
|
}
|
|
// mega cheat ― we know the exact size of this vector
|
|
let res: Vec<_> = (1..N / 2)
|
|
.filter(|&i| sieve[i])
|
|
.map(|i| 2 * i + 1)
|
|
.collect();
|
|
assert_eq!(res.len(), PRIMES_LEN);
|
|
res
|
|
}
|
|
|
|
fn mod_exponentiation(base: usize, exponent: usize, modulus: usize) -> usize {
|
|
assert!(base < u16::MAX.into());
|
|
assert!(exponent < u16::MAX.into());
|
|
assert!(modulus < u16::MAX.into());
|
|
let (mut base, mut exponent, modulus) = (base as u32, exponent as u32, modulus as u32);
|
|
let mut state = 1;
|
|
loop {
|
|
if exponent & 1 != 0 {
|
|
state *= base;
|
|
state %= modulus;
|
|
}
|
|
exponent >>= 1;
|
|
if exponent == 0 {
|
|
return state as _;
|
|
}
|
|
base *= base;
|
|
base %= modulus;
|
|
}
|
|
}
|
|
|
|
macro_rules! const_fmt {
|
|
() => {
|
|
"#[allow(warnings)]\nconst {}: [{}; {}] = {:#?};\n\n";
|
|
};
|
|
}
|
|
|
|
/// A product of many small prime numbers. We precompute the numbers between
|
|
/// `1` and `M` that are coprime to `M`. Any number whose residue modulo `M` is
|
|
/// one of these is not divisible by any of the prime factors of `M`. This
|
|
/// speeds up the generation of random prime numbers.
|
|
const M: usize = 8 * 3 * 5 * 7 * 11 * 13;
|
|
fn emit<T: std::fmt::Debug>(f: &mut dyn Write, name: &str, t: &str, obj: &[T]) {
|
|
write!(f, const_fmt!(), name, t, obj.len(), obj).expect("i/o error in build script");
|
|
}
|
|
|
|
/// Write the generated code to `f`.
|
|
fn generate(f: &mut dyn Write) {
|
|
write!(f, "const M: u32 = 8 * 3 * 5 * 7 * 11 * 13;\n\n").expect("i/o error");
|
|
let residues: Vec<usize> = {
|
|
let primes = [3, 5, 7, 11, 13];
|
|
let not_divisible = |&x: &usize| primes.iter().all(|p| x % p != 0);
|
|
(7..M).step_by(8).filter(not_divisible).collect()
|
|
};
|
|
assert_eq!(residues.len(), RESIDUES_LEN);
|
|
emit(f, "RESIDUES", "u32", &residues[..]);
|
|
let sieve_info: Vec<(usize, usize)> = odd_primes_below_65536()[5..]
|
|
.iter()
|
|
.map(|&i| (i, mod_exponentiation(M % i, i - 2, i)))
|
|
.collect();
|
|
assert_eq!(sieve_info.len(), SIEVE_INFO_LEN);
|
|
emit(f, "SIEVE_INFO", "(u16, u16)", &sieve_info[..]);
|
|
}
|
|
|
|
fn main() {
|
|
println!("cargo:rerun-if-changed=build.rs");
|
|
|
|
uniffi::generate_scaffolding("src/lib.udl").expect("uniffi generation failed");
|
|
|
|
let manifest_path = env::var("OUT_DIR").expect("cargo should have set this");
|
|
let mut path = PathBuf::from(&manifest_path);
|
|
path.push("constants.rs");
|
|
let mut f = File::create(path).expect("cannot create constants.rs");
|
|
generate(&mut f);
|
|
}
|