mirror of
https://github.com/serai-dex/serai.git
synced 2025-12-09 04:39:24 +00:00
Update the CLSAG multisig API for TX signing
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
use rand::{RngCore, rngs::OsRng};
|
||||
|
||||
use curve25519_dalek::{constants::ED25519_BASEPOINT_TABLE, scalar::Scalar, edwards::EdwardsPoint};
|
||||
use curve25519_dalek::{constants::ED25519_BASEPOINT_TABLE, scalar::Scalar};
|
||||
|
||||
use monero_serai::{random_scalar, Commitment, frost::MultisigError, key_image, clsag};
|
||||
|
||||
@@ -52,11 +52,15 @@ fn test_single() {
|
||||
|
||||
#[cfg(feature = "multisig")]
|
||||
#[derive(Clone, Debug)]
|
||||
struct Msg([u8; 32]);
|
||||
struct TransactionData;
|
||||
#[cfg(feature = "multisig")]
|
||||
impl clsag::Msg for Msg {
|
||||
fn msg(&self, _: EdwardsPoint) -> [u8; 32] {
|
||||
self.0
|
||||
impl clsag::TransactionData for TransactionData {
|
||||
fn msg(&self) -> [u8; 32] {
|
||||
[1; 32]
|
||||
}
|
||||
|
||||
fn mask_sum(&self) -> Scalar {
|
||||
Scalar::from(21u64)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,8 +70,6 @@ fn test_multisig() -> Result<(), MultisigError> {
|
||||
let (keys, group_private) = generate_keys();
|
||||
let t = keys[0].params().t();
|
||||
|
||||
let msg = [1; 32];
|
||||
|
||||
let randomness = random_scalar(&mut OsRng);
|
||||
let mut ring = vec![];
|
||||
for i in 0 .. RING_LEN {
|
||||
@@ -92,7 +94,7 @@ fn test_multisig() -> Result<(), MultisigError> {
|
||||
sign::AlgorithmMachine::new(
|
||||
clsag::InputMultisig::new(
|
||||
clsag::Input::new(ring.clone(), RING_INDEX, Commitment::new(randomness, AMOUNT)).unwrap(),
|
||||
Msg(msg)
|
||||
TransactionData
|
||||
).unwrap(),
|
||||
keys[i - 1].clone(),
|
||||
&(1 ..= THRESHOLD).collect::<Vec<usize>>()
|
||||
|
||||
@@ -50,7 +50,7 @@ pub async fn send() {
|
||||
amount = output.commitment.amount - fee - u64::try_from(i).unwrap();
|
||||
let tx = SignableTransaction::new(
|
||||
vec![output], vec![(addr, amount)], addr, fee_per_byte
|
||||
).sign(&mut OsRng, &rpc, &spend).await.unwrap();
|
||||
).unwrap().sign(&mut OsRng, &rpc, &spend).await.unwrap();
|
||||
rpc.publish_transaction(&tx).await.unwrap();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user