mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-14 02:12:33 +00:00
Tree hash cache arena (#836)
* Start adding interop genesis state to lcli * Use more efficient method to generate genesis state * Remove duplicate int_to_bytes32 * Add lcli command to change state genesis time * Add option to allow VC to start with unsynced BN * Set VC to do parallel key loading * Don't default to dummy eth1 backend * Add endpoint to dump operation pool * Add metrics for op pool * Remove state clone for slot notifier * Add mem size approximation for tree hash cache * Avoid cloning tree hash when getting head * Avoid cloning tree hash when getting head * Add working arena-based cached tree hash * Add another benchmark * Add pre-allocation for caches * Make cache nullable * Fix bugs in cache tree hash * Add validator tree hash optimization * Optimize hash_concat * Make hash32_concat return fixed-len array * Fix failing API tests * Add new beacon state cache struct * Add validator-specific cache * Separate list and values arenas * Add parallel validator registry hashing * Remove MultiTreeHashCache * Remove cached tree hash macro * Fix failing tree hash test * Address Michael's comments * Add CachedTreeHash impl for ef tests * Fix messy merge conflict * Rename cache struct, add comments * Rename cache struct, add comments * Remove unnecessary mutability * Wrap iter in result * Tidy cached tree hash * Address Michael comments * Address more comments * Use ring::Context
This commit is contained in:
@@ -53,6 +53,14 @@ pub fn int_to_bytes32(int: u64) -> Vec<u8> {
|
||||
bytes.to_vec()
|
||||
}
|
||||
|
||||
/// Returns `int` as little-endian bytes with a length of 32.
|
||||
pub fn int_to_fixed_bytes32(int: u64) -> [u8; 32] {
|
||||
let mut bytes = [0; 32];
|
||||
let int_bytes = int.to_le_bytes();
|
||||
bytes[0..int_bytes.len()].copy_from_slice(&int_bytes);
|
||||
bytes
|
||||
}
|
||||
|
||||
/// Returns `int` as little-endian bytes with a length of 48.
|
||||
pub fn int_to_bytes48(int: u64) -> Vec<u8> {
|
||||
let mut bytes = BytesMut::with_capacity(48);
|
||||
@@ -76,6 +84,13 @@ mod tests {
|
||||
use std::{fs::File, io::prelude::*, path::PathBuf};
|
||||
use yaml_rust::yaml;
|
||||
|
||||
#[test]
|
||||
fn fixed_bytes32() {
|
||||
for x in &[0, 1, 3, 256, 1024, 2943784] {
|
||||
assert_eq!(&int_to_bytes32(*x), &int_to_fixed_bytes32(*x));
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn int_to_bytes3_returns_none() {
|
||||
assert_eq!(int_to_bytes3(2_u32.pow(24)), None);
|
||||
|
||||
Reference in New Issue
Block a user