diff --git a/packages/wasm-mps/Cargo.lock b/packages/wasm-mps/Cargo.lock index efc4bcec409..48ad5e0c9d7 100644 --- a/packages/wasm-mps/Cargo.lock +++ b/packages/wasm-mps/Cargo.lock @@ -834,8 +834,9 @@ checksum = "3d97bbf43eb4f088f8ca469930cde17fa036207c9a5e02ccc5107c4e8b17c964" [[package]] name = "multi-party-schnorr" -version = "1.3.0-pre.7" -source = "git+https://github.com/silence-laboratories/multi-party-schnorr?rev=09185d1e4e78d096f2ab3e64d877fb0c88099688#09185d1e4e78d096f2ab3e64d877fb0c88099688" +version = "1.3.0-pre.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "316c632e9bde2552499a949309437c28614a4a46ced1135dddc1211559b174b9" dependencies = [ "blake2b_simd", "bytemuck", @@ -1282,9 +1283,9 @@ dependencies = [ [[package]] name = "sl-mpc-vrf" -version = "0.1.0-pre.2" +version = "0.1.0-pre.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78aa6ea9cad657a879d3cc8d11e1df100c5c53b764902ed7139fbae32425b72e" +checksum = "34d050756bcb8653d2cda2a083a8d23e75814ecd1ff7c225b64a97856e2348cb" dependencies = [ "crypto-bigint", "curve25519-dalek", diff --git a/packages/wasm-mps/Cargo.toml b/packages/wasm-mps/Cargo.toml index 13898e68cd3..bcde28c0b8f 100644 --- a/packages/wasm-mps/Cargo.toml +++ b/packages/wasm-mps/Cargo.toml @@ -17,7 +17,7 @@ bincode = { package = "bincode-next", version = "3.1.1", features = ["serde"] } crypto_box = "0.9" getrandom = { version = "0.2", features = ["js"] } js-sys = "0.3" -multi-party-schnorr = { git = "https://github.com/silence-laboratories/multi-party-schnorr", rev = "09185d1e4e78d096f2ab3e64d877fb0c88099688", features = ["serde", "eddsa", "redpallas", "vrf"] } +multi-party-schnorr = { version = "1.3.0-pre.9", features = ["serde", "eddsa", "redpallas", "vrf"] } orchard = { version = "0.13", default-features = false } pasta_curves = { version = "0.5", default-features = false } rand = "0.8" diff --git a/packages/wasm-mps/src/lib.rs b/packages/wasm-mps/src/lib.rs index 7e530d07a21..096b8805765 100644 --- a/packages/wasm-mps/src/lib.rs +++ b/packages/wasm-mps/src/lib.rs @@ -682,15 +682,6 @@ mod mps { pub party: VrfDkgParty, } - /// Duplicate a single broadcast payload into a per-recipient message pool - /// addressed to every other party in a 3-party quorum. - fn broadcast_to_hashmap(party_id: u8, msg: Vec) -> HashMap> { - (0..3) - .filter(|&pid| pid != party_id) - .map(|pid| (pid, msg.clone())) - .collect() - } - /// Process round 0 of VRF DKG (Ristretto, used to back hard derivation). /// party_id: Party identifier / index. /// seed: PRNG seed for entropy. @@ -765,20 +756,33 @@ mod mps { .process(vec![i0_msg1, i1_msg1, state.msg]) .map_err(|_| MpsError::ProtocolError)?; + let own_msg2 = msg2 + .iter() + .find(|m| m.to_party == party_id) + .cloned() + .ok_or(MpsError::ProtocolError)?; + let new_state = VrfDkgStateR2 { party_id, - msg: msg2.clone(), + msg: own_msg2, party: p2, }; - let msg = add_prefix( - "mps-ed25519-vrf-dkg-round2-message$", - &bincode::serde::encode_to_vec(&msg2, bincode::config::standard()) - .map_err(|_| MpsError::SerializationError)?, - ); + let msg: HashMap> = msg2 + .iter() + .filter(|m| m.to_party != party_id) + .map(|m| { + let bytes = add_prefix( + "mps-ed25519-vrf-dkg-round2-message$", + &bincode::serde::encode_to_vec(m, bincode::config::standard()) + .map_err(|_| MpsError::SerializationError)?, + ); + Ok((m.to_party, bytes)) + }) + .collect::>()?; Ok(MsgStateMap { - msg: broadcast_to_hashmap(party_id, msg), + msg, state: add_prefix( "mps-ed25519-vrf-dkg-round2-state$", &bincode::serde::encode_to_vec(&new_state, bincode::config::standard())