Rename transaction file to tributary, add function for genesis

This commit is contained in:
Luke Parker 2023-04-17 02:09:29 -04:00
parent 4d43c04916
commit 595cd6d404
No known key found for this signature in database
3 changed files with 18 additions and 3 deletions

View file

@ -1 +1 @@
mod transaction; mod tributary;

View file

@ -7,7 +7,7 @@ use frost::Participant;
use tributary::{ReadWrite, tests::random_signed}; use tributary::{ReadWrite, tests::random_signed};
use crate::transaction::{SignData, Transaction}; use crate::tributary::{SignData, Transaction};
fn random_u32<R: RngCore>(rng: &mut R) -> u32 { fn random_u32<R: RngCore>(rng: &mut R) -> u32 {
u32::try_from(rng.next_u64() >> 32).unwrap() u32::try_from(rng.next_u64() >> 32).unwrap()

View file

@ -1,14 +1,29 @@
use std::{io, collections::HashMap}; use std::{io, collections::HashMap};
use blake2::{Digest, Blake2s256}; use blake2::{Digest, Blake2s256};
use transcript::{Transcript, RecommendedTranscript};
use frost::Participant; use frost::Participant;
use serai_client::validator_sets::primitives::ValidatorSet;
#[rustfmt::skip] #[rustfmt::skip]
use tributary::{ use tributary::{
ReadWrite, Signed, TransactionError, TransactionKind, Transaction as TransactionTrait ReadWrite, Signed, TransactionError, TransactionKind, Transaction as TransactionTrait,
}; };
pub fn genesis(serai_block: [u8; 32], set: ValidatorSet) -> [u8; 32] {
// Calculate the genesis for this Tributary
let mut genesis = RecommendedTranscript::new(b"Serai Tributary Genesis");
// This locks it to a specific Serai chain
genesis.append_message(b"serai_block", serai_block);
genesis.append_message(b"session", set.session.0.to_le_bytes());
genesis.append_message(b"network", set.network.0.to_le_bytes());
let genesis = genesis.challenge(b"genesis");
let genesis_ref: &[u8] = genesis.as_ref();
genesis_ref[.. 32].try_into().unwrap()
}
#[derive(Clone, PartialEq, Eq, Debug)] #[derive(Clone, PartialEq, Eq, Debug)]
pub struct SignData { pub struct SignData {
pub plan: [u8; 32], pub plan: [u8; 32],