use bytemuck::{Pod, Zeroable}; use shank::ShankAccount; use crate::utils::{impl_account_from_bytes, impl_to_bytes, Discriminator}; use super::AccountDiscriminator; /// Bus accounts are responsible for distributing mining rewards. /// There are 8 busses total to minimize write-lock contention and allow for parallel mine operations. #[repr(C)] #[derive(Clone, Copy, Debug, PartialEq, Pod, ShankAccount, Zeroable)] pub struct Bus { /// The ID of the bus account. pub id: u64, /// The remaining rewards this bus has left to payout in the current epoch. pub rewards: u64, /// The rewards this bus would have paid out in the current epoch if there no limit. /// Used to calculate the updated reward rate. pub theoretical_rewards: u64, } impl Discriminator for Bus { fn discriminator() -> u8 { AccountDiscriminator::Bus.into() } } impl_to_bytes!(Bus); impl_account_from_bytes!(Bus);