Test bitcoin-serai

Also resolves a few rough edges.
This commit is contained in:
Luke Parker
2023-03-20 04:46:27 -04:00
parent 6a2a353b91
commit 7fc8630d39
10 changed files with 372 additions and 35 deletions

View File

@@ -1,59 +0,0 @@
use rand_core::OsRng;
use sha2::{Digest, Sha256};
use secp256k1::{SECP256K1, Message};
use bitcoin::hashes::{Hash as HashTrait, sha256::Hash};
use k256::Scalar;
use transcript::{Transcript, RecommendedTranscript};
use frost::{
curve::Secp256k1,
Participant,
tests::{algorithm_machines, key_gen, sign},
};
use crate::{
crypto::{x_only, make_even, Schnorr},
rpc::Rpc,
};
#[test]
fn test_algorithm() {
let mut keys = key_gen::<_, Secp256k1>(&mut OsRng);
const MESSAGE: &[u8] = b"Hello, World!";
for (_, keys) in keys.iter_mut() {
let (_, offset) = make_even(keys.group_key());
*keys = keys.offset(Scalar::from(offset));
}
let algo =
Schnorr::<RecommendedTranscript>::new(RecommendedTranscript::new(b"bitcoin-serai sign test"));
let sig = sign(
&mut OsRng,
algo.clone(),
keys.clone(),
algorithm_machines(&mut OsRng, algo, &keys),
&Sha256::digest(MESSAGE),
);
SECP256K1
.verify_schnorr(
&sig,
&Message::from(Hash::hash(MESSAGE)),
&x_only(&keys[&Participant::new(1).unwrap()].group_key()),
)
.unwrap()
}
#[tokio::test]
async fn test_rpc() {
let rpc = Rpc::new("http://serai:seraidex@127.0.0.1:18443".to_string()).await.unwrap();
let latest = rpc.get_latest_block_number().await.unwrap();
assert_eq!(
rpc.get_block_number(&rpc.get_block_hash(latest).await.unwrap()).await.unwrap(),
latest
);
}