mirror of
https://github.com/serai-dex/serai.git
synced 2025-12-09 04:39:24 +00:00
Provide a dedicated signature in Precommit of just the block hash
Greatly simplifies verifying when syncing.
This commit is contained in:
@@ -18,17 +18,13 @@ impl SignatureScheme for TestSignatureScheme {
|
||||
fn sign(&self, msg: &[u8]) -> [u8; 32] {
|
||||
let mut sig = [0; 32];
|
||||
sig[.. 2].copy_from_slice(&self.0.to_le_bytes());
|
||||
sig[2 .. (2 + 30.min(msg.len()))].copy_from_slice(msg);
|
||||
sig[2 .. (2 + 30.min(msg.len()))].copy_from_slice(&msg[.. 30.min(msg.len())]);
|
||||
sig
|
||||
}
|
||||
|
||||
fn verify(&self, validator: u16, msg: &[u8], sig: [u8; 32]) -> bool {
|
||||
(sig[.. 2] == validator.to_le_bytes()) && (&sig[2 ..] == &[msg, &[0; 30]].concat()[.. 30])
|
||||
}
|
||||
|
||||
fn aggregate(sigs: &[[u8; 32]]) -> Vec<[u8; 32]> {
|
||||
sigs.to_vec()
|
||||
}
|
||||
}
|
||||
|
||||
struct TestWeights;
|
||||
@@ -95,9 +91,12 @@ impl Network for TestNetwork {
|
||||
block.valid
|
||||
}
|
||||
|
||||
fn add_block(&mut self, block: TestBlock) -> TestBlock {
|
||||
fn add_block(&mut self, block: TestBlock, sigs: Vec<(u16, [u8; 32])>) -> TestBlock {
|
||||
dbg!("Adding ", &block);
|
||||
assert!(block.valid.is_ok());
|
||||
for sig in sigs {
|
||||
assert!(TestSignatureScheme(u16::MAX).verify(sig.0, &block.id().encode(), sig.1));
|
||||
}
|
||||
TestBlock { id: block.id + 1, valid: Ok(()) }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user