1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
use anchor_lang::prelude::*;
use bytemuck::{Pod, Zeroable};
#[zero_copy(unsafe)]
#[derive(Default)]
#[repr(packed)]
pub struct CrankRow {
/// The PublicKey of the AggregatorAccountData.
pub pubkey: Pubkey,
/// The aggregator's next available update time.
pub next_timestamp: i64,
}
unsafe impl Pod for CrankRow {}
unsafe impl Zeroable for CrankRow {}
#[account(zero_copy(unsafe))]
#[repr(packed)]
pub struct CrankAccountData {
/// Name of the crank to store on-chain.
pub name: [u8; 32],
/// Metadata of the crank to store on-chain.
pub metadata: [u8; 64],
/// Public key of the oracle queue who owns the crank.
pub queue_pubkey: Pubkey,
/// Number of aggregators added to the crank.
pub pq_size: u32,
/// Maximum number of aggregators allowed to be added to a crank.
pub max_rows: u32,
/// Pseudorandom value added to next aggregator update time.
pub jitter_modifier: u8,
/// Reserved for future info.
pub _ebuf: [u8; 255],
/// The public key of the CrankBuffer account holding a collection of Aggregator pubkeys and their next allowed update time.
pub data_buffer: Pubkey,
}
impl CrankAccountData {}