38 lines
1.2 KiB
Rust
38 lines
1.2 KiB
Rust
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 {}
|