mirror of
https://github.com/serai-dex/serai.git
synced 2025-12-08 12:19:24 +00:00
Replace bincode with borsh (#452)
* Add SignalsConfig to chain_spec * Correct multiexp feature flagging for rand_core std * Remove bincode for borsh Replaces a non-canonical encoding with a canonical encoding which additionally should be faster. Also fixes an issue where we used bincode in transcripts where it cannot be trusted. This ended up fixing a myriad of other bugs observed, unfortunately. Accordingly, it either has to be merged or the bug fixes from it must be ported to a new PR. * Make serde optional, minimize usage * Make borsh an optional dependency of substrate/ crates * Remove unused dependencies * Use [u8; 64] where possible in the processor messages * Correct borsh feature flagging
This commit is contained in:
@@ -31,7 +31,7 @@ scale = { package = "parity-scale-codec", version = "3" }
|
||||
serai-client = { path = "../../substrate/client", features = ["serai"] }
|
||||
serai-message-queue = { path = "../../message-queue" }
|
||||
|
||||
serde_json = { version = "1", default-features = false }
|
||||
borsh = { version = "1", features = ["de_strict_order"] }
|
||||
|
||||
tokio = { version = "1", features = ["time"] }
|
||||
|
||||
|
||||
@@ -268,7 +268,7 @@ impl Processor {
|
||||
assert_eq!(msg.from, Service::Coordinator);
|
||||
assert_eq!(msg.id, *next_recv_id);
|
||||
|
||||
let msg_msg = serde_json::from_slice(&msg.msg).unwrap();
|
||||
let msg_msg = borsh::from_slice(&msg.msg).unwrap();
|
||||
if !is_cosign_message(&msg_msg) {
|
||||
continue;
|
||||
}
|
||||
@@ -309,7 +309,7 @@ impl Processor {
|
||||
res
|
||||
.send_message(messages::coordinator::ProcessorMessage::CosignPreprocess {
|
||||
id: id.clone(),
|
||||
preprocesses: vec![vec![raw_i; 64]],
|
||||
preprocesses: vec![[raw_i; 64]],
|
||||
})
|
||||
.await;
|
||||
}
|
||||
@@ -387,7 +387,7 @@ impl Processor {
|
||||
to: Service::Coordinator,
|
||||
intent: msg.intent(),
|
||||
},
|
||||
serde_json::to_string(&msg).unwrap().into_bytes(),
|
||||
borsh::to_vec(&msg).unwrap(),
|
||||
)
|
||||
.await;
|
||||
*next_send_id += 1;
|
||||
@@ -408,7 +408,7 @@ impl Processor {
|
||||
assert_eq!(msg.id, *next_recv_id);
|
||||
|
||||
// If this is a cosign message, let the cosign task handle it
|
||||
let msg_msg = serde_json::from_slice(&msg.msg).unwrap();
|
||||
let msg_msg = borsh::from_slice(&msg.msg).unwrap();
|
||||
if is_cosign_message(&msg_msg) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -63,7 +63,7 @@ pub async fn batch(
|
||||
.send_message(messages::coordinator::ProcessorMessage::BatchPreprocess {
|
||||
id: id.clone(),
|
||||
block: batch.block,
|
||||
preprocesses: vec![[processor_is[i]; 64].to_vec()],
|
||||
preprocesses: vec![[processor_is[i]; 64]],
|
||||
})
|
||||
.await;
|
||||
}
|
||||
@@ -77,7 +77,7 @@ pub async fn batch(
|
||||
.send_message(messages::coordinator::ProcessorMessage::BatchPreprocess {
|
||||
id: id.clone(),
|
||||
block: batch.block,
|
||||
preprocesses: vec![[processor_is[excluded_signer]; 64].to_vec()],
|
||||
preprocesses: vec![[processor_is[excluded_signer]; 64]],
|
||||
})
|
||||
.await;
|
||||
|
||||
@@ -98,7 +98,7 @@ pub async fn batch(
|
||||
|
||||
let mut participants = preprocesses.keys().cloned().collect::<HashSet<_>>();
|
||||
for (p, preprocess) in preprocesses {
|
||||
assert_eq!(preprocess, vec![u8::try_from(u16::from(p)).unwrap(); 64]);
|
||||
assert_eq!(preprocess, [u8::try_from(u16::from(p)).unwrap(); 64]);
|
||||
}
|
||||
participants.insert(known_signer_i);
|
||||
participants
|
||||
@@ -116,7 +116,7 @@ pub async fn batch(
|
||||
let mut preprocesses = participants
|
||||
.clone()
|
||||
.into_iter()
|
||||
.map(|i| (i, [u8::try_from(u16::from(i)).unwrap(); 64].to_vec()))
|
||||
.map(|i| (i, [u8::try_from(u16::from(i)).unwrap(); 64]))
|
||||
.collect::<HashMap<_, _>>();
|
||||
preprocesses.remove(&i);
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ use dkg::ThresholdParams;
|
||||
use serai_client::{
|
||||
primitives::NetworkId,
|
||||
Public,
|
||||
validator_sets::primitives::{Session, ValidatorSet},
|
||||
validator_sets::primitives::{Session, ValidatorSet, KeyPair},
|
||||
};
|
||||
use messages::{key_gen::KeyGenId, CoordinatorMessage};
|
||||
|
||||
@@ -205,7 +205,7 @@ pub async fn key_gen<C: Ciphersuite>(
|
||||
.await
|
||||
.unwrap()
|
||||
.unwrap(),
|
||||
(Public(substrate_key), network_key.try_into().unwrap())
|
||||
KeyPair(Public(substrate_key), network_key.try_into().unwrap())
|
||||
);
|
||||
|
||||
for processor in processors.iter_mut() {
|
||||
|
||||
@@ -52,7 +52,7 @@ pub async fn sign<C: Ciphersuite>(
|
||||
processor
|
||||
.send_message(messages::sign::ProcessorMessage::Preprocess {
|
||||
id: id.clone(),
|
||||
preprocesses: vec![[processor_is[i]; 64].to_vec()],
|
||||
preprocesses: vec![vec![processor_is[i]; 128]],
|
||||
})
|
||||
.await;
|
||||
}
|
||||
@@ -65,7 +65,7 @@ pub async fn sign<C: Ciphersuite>(
|
||||
processors[excluded_signer]
|
||||
.send_message(messages::sign::ProcessorMessage::Preprocess {
|
||||
id: id.clone(),
|
||||
preprocesses: vec![[processor_is[excluded_signer]; 64].to_vec()],
|
||||
preprocesses: vec![vec![processor_is[excluded_signer]; 128]],
|
||||
})
|
||||
.await;
|
||||
|
||||
@@ -83,7 +83,7 @@ pub async fn sign<C: Ciphersuite>(
|
||||
|
||||
let mut participants = preprocesses.keys().cloned().collect::<HashSet<_>>();
|
||||
for (p, preprocess) in preprocesses {
|
||||
assert_eq!(preprocess, vec![u8::try_from(u16::from(p)).unwrap(); 64]);
|
||||
assert_eq!(preprocess, vec![u8::try_from(u16::from(p)).unwrap(); 128]);
|
||||
}
|
||||
participants.insert(known_signer_i);
|
||||
participants
|
||||
@@ -101,7 +101,7 @@ pub async fn sign<C: Ciphersuite>(
|
||||
let mut preprocesses = participants
|
||||
.clone()
|
||||
.into_iter()
|
||||
.map(|i| (i, [u8::try_from(u16::from(i)).unwrap(); 64].to_vec()))
|
||||
.map(|i| (i, vec![u8::try_from(u16::from(i)).unwrap(); 128]))
|
||||
.collect::<HashMap<_, _>>();
|
||||
preprocesses.remove(&i);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user