changed RwLock to RefCell
This commit is contained in:
parent
d278b71cb2
commit
f20380d6b4
|
@ -42,13 +42,14 @@ fn main() {
|
|||
|
||||
let users = rnd.gen_n_keys(num_accounts, tokens_per_user);
|
||||
|
||||
let last_id = demo.mint.last_id();
|
||||
let mint_keypair = demo.mint.keypair();
|
||||
let last_id = demo.mint.last_id();
|
||||
|
||||
eprintln!("Signing {} transactions...", num_accounts);
|
||||
let events: Vec<_> = users
|
||||
.into_par_iter()
|
||||
.map(|(pkcs8, tokens)| {
|
||||
let last_id = demo.mint.last_id();
|
||||
let rando = KeyPair::from_pkcs8(Input::from(&pkcs8)).unwrap();
|
||||
let tr = Transaction::new(&mint_keypair, rando.pubkey(), tokens, last_id);
|
||||
Event::Transaction(tr)
|
||||
|
|
|
@ -3,13 +3,12 @@
|
|||
use generic_array::typenum::{U32, U64};
|
||||
use generic_array::GenericArray;
|
||||
use rand::{ChaChaRng, Rng, SeedableRng};
|
||||
use rayon::prelude::*;
|
||||
use ring::error::Unspecified;
|
||||
use ring::rand::SecureRandom;
|
||||
use ring::signature::Ed25519KeyPair;
|
||||
use ring::{rand, signature};
|
||||
use std::cell::RefCell;
|
||||
use std::mem;
|
||||
use std::sync::RwLock;
|
||||
use untrusted;
|
||||
|
||||
pub type KeyPair = Ed25519KeyPair;
|
||||
|
@ -49,7 +48,9 @@ impl SignatureUtil for GenericArray<u8, U64> {
|
|||
}
|
||||
|
||||
pub struct GenKeys {
|
||||
generator: RwLock<ChaChaRng>,
|
||||
// This is necessary because the rng needs to mutate its state to remain
|
||||
// deterministic, and the fill trait requires an immuatble reference to self
|
||||
generator: RefCell<ChaChaRng>,
|
||||
}
|
||||
|
||||
impl GenKeys {
|
||||
|
@ -57,7 +58,7 @@ impl GenKeys {
|
|||
let seed: &[u8] = &seed_values[..];
|
||||
let rng: ChaChaRng = SeedableRng::from_seed(unsafe { mem::transmute(seed) });
|
||||
GenKeys {
|
||||
generator: RwLock::new(rng),
|
||||
generator: RefCell::new(rng),
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -67,7 +68,7 @@ impl GenKeys {
|
|||
|
||||
pub fn gen_n_keys(&self, n_keys: i64, tokens_per_user: i64) -> Vec<(Vec<u8>, i64)> {
|
||||
let users: Vec<_> = (0..n_keys)
|
||||
.into_par_iter()
|
||||
.into_iter()
|
||||
.map(|_| {
|
||||
let pkcs8 = self.new_key();
|
||||
(pkcs8, tokens_per_user)
|
||||
|
@ -79,7 +80,7 @@ impl GenKeys {
|
|||
|
||||
impl SecureRandom for GenKeys {
|
||||
fn fill(&self, dest: &mut [u8]) -> Result<(), Unspecified> {
|
||||
let mut rng = self.generator.write().unwrap();
|
||||
let mut rng = self.generator.borrow_mut();
|
||||
rng.fill_bytes(dest);
|
||||
Ok(())
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue