2019-05-21 15:19:41 -07:00
|
|
|
//! named accounts for synthesized data accounts for bank state, etc.
|
|
|
|
//!
|
2020-02-05 12:23:19 -08:00
|
|
|
//! this account carries the Bank's most recent bank hashes for some N parents
|
2019-05-21 15:19:41 -07:00
|
|
|
//!
|
2019-12-23 12:23:45 -08:00
|
|
|
pub use crate::slot_hashes::SlotHashes;
|
|
|
|
|
2021-04-06 00:08:03 -07:00
|
|
|
use crate::{account_info::AccountInfo, program_error::ProgramError, sysvar::Sysvar};
|
2019-06-21 20:43:24 -07:00
|
|
|
|
2019-11-21 16:34:40 -08:00
|
|
|
crate::declare_sysvar_id!("SysvarS1otHashes111111111111111111111111111", SlotHashes);
|
2019-05-21 21:45:38 -07:00
|
|
|
|
2019-11-04 12:31:24 -08:00
|
|
|
impl Sysvar for SlotHashes {
|
2019-12-23 12:23:45 -08:00
|
|
|
// override
|
|
|
|
fn size_of() -> usize {
|
|
|
|
// hard-coded so that we don't have to construct an empty
|
|
|
|
20_488 // golden, update if MAX_ENTRIES changes
|
2019-05-21 15:19:41 -07:00
|
|
|
}
|
2021-04-06 00:08:03 -07:00
|
|
|
fn from_account_info(_account_info: &AccountInfo) -> Result<Self, ProgramError> {
|
|
|
|
// This sysvar is too large to bincode::deserialize in-program
|
|
|
|
Err(ProgramError::UnsupportedSysvar)
|
|
|
|
}
|
2019-05-21 15:19:41 -07:00
|
|
|
}
|
2019-05-22 19:07:56 -07:00
|
|
|
|
2019-05-21 15:19:41 -07:00
|
|
|
#[cfg(test)]
|
|
|
|
mod tests {
|
|
|
|
use super::*;
|
2019-12-23 12:23:45 -08:00
|
|
|
use crate::{clock::Slot, hash::Hash, slot_hashes::MAX_ENTRIES};
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn test_size_of() {
|
|
|
|
assert_eq!(
|
|
|
|
SlotHashes::size_of(),
|
|
|
|
bincode::serialized_size(
|
|
|
|
&(0..MAX_ENTRIES)
|
|
|
|
.map(|slot| (slot as Slot, Hash::default()))
|
|
|
|
.collect::<SlotHashes>()
|
|
|
|
)
|
|
|
|
.unwrap() as usize
|
|
|
|
);
|
|
|
|
}
|
2019-05-21 15:19:41 -07:00
|
|
|
}
|