mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-22 22:34:45 +00:00
Update types to new tree_hash crate
This commit is contained in:
@@ -98,3 +98,85 @@ fn signed_root() {
|
||||
|
||||
assert_eq!(unsigned.tree_hash_root(), signed.signed_root());
|
||||
}
|
||||
|
||||
#[derive(TreeHash, SignedRoot)]
|
||||
struct CryptoKitties {
|
||||
best_kitty: u64,
|
||||
worst_kitty: u8,
|
||||
kitties: Vec<u32>,
|
||||
}
|
||||
|
||||
impl CryptoKitties {
|
||||
fn new() -> Self {
|
||||
CryptoKitties {
|
||||
best_kitty: 9999,
|
||||
worst_kitty: 1,
|
||||
kitties: vec![2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43],
|
||||
}
|
||||
}
|
||||
|
||||
fn hash(&self) -> Vec<u8> {
|
||||
let mut leaves = vec![];
|
||||
leaves.append(&mut self.best_kitty.tree_hash_root());
|
||||
leaves.append(&mut self.worst_kitty.tree_hash_root());
|
||||
leaves.append(&mut self.kitties.tree_hash_root());
|
||||
tree_hash::merkle_root(&leaves)
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_simple_tree_hash_derive() {
|
||||
let kitties = CryptoKitties::new();
|
||||
assert_eq!(kitties.tree_hash_root(), kitties.hash());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_simple_signed_root_derive() {
|
||||
let kitties = CryptoKitties::new();
|
||||
assert_eq!(kitties.signed_root(), kitties.hash());
|
||||
}
|
||||
|
||||
#[derive(TreeHash, SignedRoot)]
|
||||
struct Casper {
|
||||
friendly: bool,
|
||||
#[tree_hash(skip_hashing)]
|
||||
friends: Vec<u32>,
|
||||
#[signed_root(skip_hashing)]
|
||||
dead: bool,
|
||||
}
|
||||
|
||||
impl Casper {
|
||||
fn new() -> Self {
|
||||
Casper {
|
||||
friendly: true,
|
||||
friends: vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
|
||||
dead: true,
|
||||
}
|
||||
}
|
||||
|
||||
fn expected_signed_hash(&self) -> Vec<u8> {
|
||||
let mut list = Vec::new();
|
||||
list.append(&mut self.friendly.tree_hash_root());
|
||||
list.append(&mut self.friends.tree_hash_root());
|
||||
tree_hash::merkle_root(&list)
|
||||
}
|
||||
|
||||
fn expected_tree_hash(&self) -> Vec<u8> {
|
||||
let mut list = Vec::new();
|
||||
list.append(&mut self.friendly.tree_hash_root());
|
||||
list.append(&mut self.dead.tree_hash_root());
|
||||
tree_hash::merkle_root(&list)
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_annotated_tree_hash_derive() {
|
||||
let casper = Casper::new();
|
||||
assert_eq!(casper.tree_hash_root(), casper.expected_tree_hash());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_annotated_signed_root_derive() {
|
||||
let casper = Casper::new();
|
||||
assert_eq!(casper.signed_root(), casper.expected_signed_hash());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user