mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-28 00:28:01 +00:00
* Companion for substrate #13889 * Remove leftover * Remove removed dependency * Remove sp-consensus-vrf from lock * Revert "Remove sp-consensus-vrf from lock" This reverts commit 2269ca1e32df89272e8fd4544292204db387f436. * Fix after substrate modifications * Fix tests to use new VRF Signature type * Don't rely of Deref trait * Fix test * Further code simplification * Reuse garbage_vrf_signature * update lockfile for {"substrate"} --------- Co-authored-by: parity-processbot <>
This commit is contained in:
@@ -356,10 +356,10 @@ fn compute_relay_vrf_modulo_assignments(
|
||||
// has been executed.
|
||||
let cert = AssignmentCert {
|
||||
kind: AssignmentCertKind::RelayVRFModulo { sample: rvm_sample },
|
||||
vrf: (
|
||||
approval_types::VRFOutput(vrf_in_out.to_output()),
|
||||
approval_types::VRFProof(vrf_proof),
|
||||
),
|
||||
vrf: approval_types::VrfSignature {
|
||||
output: approval_types::VrfOutput(vrf_in_out.to_output()),
|
||||
proof: approval_types::VrfProof(vrf_proof),
|
||||
},
|
||||
};
|
||||
|
||||
// All assignments of type RelayVRFModulo have tranche 0.
|
||||
@@ -393,10 +393,10 @@ fn compute_relay_vrf_delay_assignments(
|
||||
|
||||
let cert = AssignmentCert {
|
||||
kind: AssignmentCertKind::RelayVRFDelay { core_index: core },
|
||||
vrf: (
|
||||
approval_types::VRFOutput(vrf_in_out.to_output()),
|
||||
approval_types::VRFProof(vrf_proof),
|
||||
),
|
||||
vrf: approval_types::VrfSignature {
|
||||
output: approval_types::VrfOutput(vrf_in_out.to_output()),
|
||||
proof: approval_types::VrfProof(vrf_proof),
|
||||
},
|
||||
};
|
||||
|
||||
let our_assignment = OurAssignment { cert, tranche, validator_index, triggered: false };
|
||||
@@ -496,7 +496,7 @@ pub(crate) fn check_assignment_cert(
|
||||
return Err(InvalidAssignment(Reason::IsInBackingGroup))
|
||||
}
|
||||
|
||||
let (vrf_output, vrf_proof) = &assignment.vrf;
|
||||
let vrf_signature = &assignment.vrf;
|
||||
match assignment.kind {
|
||||
AssignmentCertKind::RelayVRFModulo { sample } => {
|
||||
if sample >= config.relay_vrf_modulo_samples {
|
||||
@@ -506,8 +506,8 @@ pub(crate) fn check_assignment_cert(
|
||||
let (vrf_in_out, _) = public
|
||||
.vrf_verify_extra(
|
||||
relay_vrf_modulo_transcript(relay_vrf_story, sample),
|
||||
&vrf_output.0,
|
||||
&vrf_proof.0,
|
||||
&vrf_signature.output.0,
|
||||
&vrf_signature.proof.0,
|
||||
assigned_core_transcript(claimed_core_index),
|
||||
)
|
||||
.map_err(|_| InvalidAssignment(Reason::VRFModuloOutputMismatch))?;
|
||||
@@ -527,8 +527,8 @@ pub(crate) fn check_assignment_cert(
|
||||
let (vrf_in_out, _) = public
|
||||
.vrf_verify(
|
||||
relay_vrf_delay_transcript(relay_vrf_story, core_index),
|
||||
&vrf_output.0,
|
||||
&vrf_proof.0,
|
||||
&vrf_signature.output.0,
|
||||
&vrf_signature.proof.0,
|
||||
)
|
||||
.map_err(|_| InvalidAssignment(Reason::VRFDelayOutputMismatch))?;
|
||||
|
||||
@@ -552,7 +552,7 @@ fn is_in_backing_group(
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use polkadot_node_primitives::approval::{VRFOutput, VRFProof};
|
||||
use crate::import::tests::garbage_vrf_signature;
|
||||
use polkadot_primitives::{Hash, ASSIGNMENT_KEY_TYPE_ID};
|
||||
use sp_application_crypto::sr25519;
|
||||
use sp_core::crypto::Pair as PairT;
|
||||
@@ -606,15 +606,6 @@ mod tests {
|
||||
.collect()
|
||||
}
|
||||
|
||||
// used for generating assignments where the validity of the VRF doesn't matter.
|
||||
fn garbage_vrf() -> (VRFOutput, VRFProof) {
|
||||
let key = Sr25519Keyring::Alice.pair();
|
||||
let key: &schnorrkel::Keypair = key.as_ref();
|
||||
|
||||
let (o, p, _) = key.vrf_sign(Transcript::new(b"test-garbage"));
|
||||
(VRFOutput(o.to_output()), VRFProof(p))
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn assignments_produced_for_non_backing() {
|
||||
let keystore = make_keystore(&[Sr25519Keyring::Alice]);
|
||||
@@ -825,7 +816,7 @@ mod tests {
|
||||
check_mutated_assignments(40, 10, 8, |m| {
|
||||
match m.cert.kind.clone() {
|
||||
AssignmentCertKind::RelayVRFDelay { .. } => {
|
||||
m.cert.vrf = garbage_vrf();
|
||||
m.cert.vrf = garbage_vrf_signature();
|
||||
Some(false)
|
||||
},
|
||||
_ => None, // skip everything else.
|
||||
@@ -838,7 +829,7 @@ mod tests {
|
||||
check_mutated_assignments(200, 100, 25, |m| {
|
||||
match m.cert.kind.clone() {
|
||||
AssignmentCertKind::RelayVRFModulo { .. } => {
|
||||
m.cert.vrf = garbage_vrf();
|
||||
m.cert.vrf = garbage_vrf_signature();
|
||||
Some(false)
|
||||
},
|
||||
_ => None, // skip everything else.
|
||||
|
||||
@@ -612,8 +612,7 @@ pub(crate) mod tests {
|
||||
use crate::approval_db::v1::DbBackend;
|
||||
use ::test_helpers::{dummy_candidate_receipt, dummy_hash};
|
||||
use assert_matches::assert_matches;
|
||||
use merlin::Transcript;
|
||||
use polkadot_node_primitives::approval::{VRFOutput, VRFProof};
|
||||
use polkadot_node_primitives::approval::{VrfSignature, VrfTranscript};
|
||||
use polkadot_node_subsystem::messages::{AllMessages, ApprovalVotingMessage};
|
||||
use polkadot_node_subsystem_test_helpers::make_subsystem_context;
|
||||
use polkadot_node_subsystem_util::database::Database;
|
||||
@@ -622,7 +621,7 @@ pub(crate) mod tests {
|
||||
digests::{CompatibleDigestItem, PreDigest, SecondaryVRFPreDigest},
|
||||
AllowedSlots, BabeEpochConfiguration, Epoch as BabeEpoch,
|
||||
};
|
||||
use sp_core::testing::TaskExecutor;
|
||||
use sp_core::{crypto::VrfSigner, testing::TaskExecutor};
|
||||
use sp_keyring::sr25519::Keyring as Sr25519Keyring;
|
||||
pub(crate) use sp_runtime::{Digest, DigestItem};
|
||||
use std::{pin::Pin, sync::Arc};
|
||||
@@ -703,12 +702,9 @@ pub(crate) mod tests {
|
||||
}
|
||||
|
||||
// used for generating assignments where the validity of the VRF doesn't matter.
|
||||
pub(crate) fn garbage_vrf() -> (VRFOutput, VRFProof) {
|
||||
let key = Sr25519Keyring::Alice.pair();
|
||||
let key: &schnorrkel::Keypair = key.as_ref();
|
||||
|
||||
let (o, p, _) = key.vrf_sign(Transcript::new(b"test-garbage"));
|
||||
(VRFOutput(o.to_output()), VRFProof(p))
|
||||
pub(crate) fn garbage_vrf_signature() -> VrfSignature {
|
||||
let transcript = VrfTranscript::new(b"test-garbage", &[]);
|
||||
Sr25519Keyring::Alice.pair().vrf_sign(&transcript)
|
||||
}
|
||||
|
||||
fn dummy_session_info(index: SessionIndex) -> SessionInfo {
|
||||
@@ -743,9 +739,9 @@ pub(crate) mod tests {
|
||||
let header = Header {
|
||||
digest: {
|
||||
let mut d = Digest::default();
|
||||
let (vrf_output, vrf_proof) = garbage_vrf();
|
||||
let vrf_signature = garbage_vrf_signature();
|
||||
d.push(DigestItem::babe_pre_digest(PreDigest::SecondaryVRF(
|
||||
SecondaryVRFPreDigest { authority_index: 0, slot, vrf_output, vrf_proof },
|
||||
SecondaryVRFPreDigest { authority_index: 0, slot, vrf_signature },
|
||||
)));
|
||||
|
||||
d
|
||||
@@ -1042,9 +1038,9 @@ pub(crate) mod tests {
|
||||
let header = Header {
|
||||
digest: {
|
||||
let mut d = Digest::default();
|
||||
let (vrf_output, vrf_proof) = garbage_vrf();
|
||||
let vrf_signature = garbage_vrf_signature();
|
||||
d.push(DigestItem::babe_pre_digest(PreDigest::SecondaryVRF(
|
||||
SecondaryVRFPreDigest { authority_index: 0, slot, vrf_output, vrf_proof },
|
||||
SecondaryVRFPreDigest { authority_index: 0, slot, vrf_signature },
|
||||
)));
|
||||
|
||||
d.push(ConsensusLog::ForceApprove(3).into());
|
||||
@@ -1194,9 +1190,9 @@ pub(crate) mod tests {
|
||||
let header = Header {
|
||||
digest: {
|
||||
let mut d = Digest::default();
|
||||
let (vrf_output, vrf_proof) = garbage_vrf();
|
||||
let vrf_signature = garbage_vrf_signature();
|
||||
d.push(DigestItem::babe_pre_digest(PreDigest::SecondaryVRF(
|
||||
SecondaryVRFPreDigest { authority_index: 0, slot, vrf_output, vrf_proof },
|
||||
SecondaryVRFPreDigest { authority_index: 0, slot, vrf_signature },
|
||||
)));
|
||||
|
||||
d
|
||||
|
||||
@@ -19,7 +19,7 @@ use crate::tests::test_constants::TEST_CONFIG;
|
||||
use super::*;
|
||||
use polkadot_node_primitives::{
|
||||
approval::{
|
||||
AssignmentCert, AssignmentCertKind, DelayTranche, VRFOutput, VRFProof,
|
||||
AssignmentCert, AssignmentCertKind, DelayTranche, VrfOutput, VrfProof, VrfSignature,
|
||||
RELAY_VRF_MODULO_CONTEXT,
|
||||
},
|
||||
AvailableData, BlockData, PoV,
|
||||
@@ -56,8 +56,8 @@ use super::{
|
||||
approval_db::v1::StoredBlockRange,
|
||||
backend::BackendWriteOp,
|
||||
import::tests::{
|
||||
garbage_vrf, AllowedSlots, BabeEpoch, BabeEpochConfiguration, CompatibleDigestItem, Digest,
|
||||
DigestItem, PreDigest, SecondaryVRFPreDigest,
|
||||
garbage_vrf_signature, AllowedSlots, BabeEpoch, BabeEpochConfiguration,
|
||||
CompatibleDigestItem, Digest, DigestItem, PreDigest, SecondaryVRFPreDigest,
|
||||
},
|
||||
};
|
||||
|
||||
@@ -392,7 +392,7 @@ fn garbage_assignment_cert(kind: AssignmentCertKind) -> AssignmentCert {
|
||||
let (inout, proof, _) = keypair.vrf_sign(ctx.bytes(msg));
|
||||
let out = inout.to_output();
|
||||
|
||||
AssignmentCert { kind, vrf: (VRFOutput(out), VRFProof(proof)) }
|
||||
AssignmentCert { kind, vrf: VrfSignature { output: VrfOutput(out), proof: VrfProof(proof) } }
|
||||
}
|
||||
|
||||
fn sign_approval(
|
||||
@@ -721,9 +721,9 @@ impl ChainBuilder {
|
||||
fn make_header(parent_hash: Hash, slot: Slot, number: u32) -> Header {
|
||||
let digest = {
|
||||
let mut digest = Digest::default();
|
||||
let (vrf_output, vrf_proof) = garbage_vrf();
|
||||
let vrf_signature = garbage_vrf_signature();
|
||||
digest.push(DigestItem::babe_pre_digest(PreDigest::SecondaryVRF(
|
||||
SecondaryVRFPreDigest { authority_index: 0, slot, vrf_output, vrf_proof },
|
||||
SecondaryVRFPreDigest { authority_index: 0, slot, vrf_signature },
|
||||
)));
|
||||
digest
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user