update to anchor28
This commit is contained in:
parent
dc90cf456f
commit
289eac2cb6
File diff suppressed because it is too large
Load Diff
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "switchboard-solana"
|
name = "switchboard-solana"
|
||||||
version = "0.5.3"
|
version = "0.6.0"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
description = "A Rust library to interact with Switchboard accounts."
|
description = "A Rust library to interact with Switchboard accounts."
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
|
@ -21,23 +21,19 @@ no-entrypoint = []
|
||||||
cpi = ["no-entrypoint"]
|
cpi = ["no-entrypoint"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
anchor-spl = "=0.26.0"
|
anchor-spl = "=0.28.0"
|
||||||
solana-program = ">= 1.13.5, < 1.14.19"
|
solana-program = ">= 1.16, < 1.17"
|
||||||
rust_decimal = "^1"
|
rust_decimal = "^1"
|
||||||
bytemuck = "^1"
|
bytemuck = "^1"
|
||||||
superslice = "1"
|
superslice = "1"
|
||||||
# These may not be needed, anchor27 keeps complaining
|
|
||||||
winnow = "=0.4.1"
|
|
||||||
toml_edit = "=0.19.8"
|
|
||||||
toml_datetime = "=0.6.1"
|
|
||||||
|
|
||||||
[target.'cfg(target_os = "solana")'.dependencies]
|
[target.'cfg(target_os = "solana")'.dependencies]
|
||||||
switchboard-common = { version = "0.5.3" }
|
switchboard-common = { version = "0.5.3" }
|
||||||
anchor-lang = { version = "=0.26.0" }
|
anchor-lang = { version = "=0.28.0" }
|
||||||
|
|
||||||
[target.'cfg(not(target_os = "solana"))'.dependencies]
|
[target.'cfg(not(target_os = "solana"))'.dependencies]
|
||||||
switchboard-common = { version = "0.5.3", features = ["sgx"] }
|
switchboard-common = { version = "0.5.3", features = ["sgx"] }
|
||||||
anchor-client = { version = "=0.26.0" }
|
anchor-client = { version = "=0.28.0" }
|
||||||
bincode = { version = "^1" }
|
bincode = { version = "^1" }
|
||||||
sgx-quote = { version = "0.1.0" }
|
sgx-quote = { version = "0.1.0" }
|
||||||
cron = { version = "0.12.0" }
|
cron = { version = "0.12.0" }
|
||||||
|
|
|
@ -31,7 +31,7 @@ impl From<u32> for SwitchboardAttestationPermission {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[zero_copy]
|
#[zero_copy(unsafe)]
|
||||||
#[repr(packed)]
|
#[repr(packed)]
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct AttestationPermissionAccountData {
|
pub struct AttestationPermissionAccountData {
|
||||||
|
|
|
@ -5,7 +5,7 @@ use std::cell::Ref;
|
||||||
|
|
||||||
use crate::SWITCHBOARD_ATTESTATION_PROGRAM_ID;
|
use crate::SWITCHBOARD_ATTESTATION_PROGRAM_ID;
|
||||||
|
|
||||||
#[zero_copy]
|
#[zero_copy(unsafe)]
|
||||||
#[repr(packed)]
|
#[repr(packed)]
|
||||||
pub struct AttestationQueueAccountData {
|
pub struct AttestationQueueAccountData {
|
||||||
/// The address of the authority which is permitted to add/remove allowed enclave measurements.
|
/// The address of the authority which is permitted to add/remove allowed enclave measurements.
|
||||||
|
|
|
@ -4,7 +4,7 @@ use bytemuck::{Pod, Zeroable};
|
||||||
|
|
||||||
use crate::SWITCHBOARD_ATTESTATION_PROGRAM_ID;
|
use crate::SWITCHBOARD_ATTESTATION_PROGRAM_ID;
|
||||||
|
|
||||||
#[zero_copy]
|
#[zero_copy(unsafe)]
|
||||||
#[repr(packed)]
|
#[repr(packed)]
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct AttestationProgramState {
|
pub struct AttestationProgramState {
|
||||||
|
|
|
@ -40,7 +40,7 @@ impl From<u8> for VerificationStatus {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[zero_copy]
|
#[zero_copy(unsafe)]
|
||||||
#[repr(packed)]
|
#[repr(packed)]
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct EnclaveAccountData {
|
pub struct EnclaveAccountData {
|
||||||
|
|
|
@ -39,7 +39,7 @@ impl From<u8> for FunctionStatus {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#[zero_copy]
|
#[zero_copy(unsafe)]
|
||||||
#[repr(packed)]
|
#[repr(packed)]
|
||||||
#[derive(Debug, PartialEq)]
|
#[derive(Debug, PartialEq)]
|
||||||
pub struct FunctionAccountData {
|
pub struct FunctionAccountData {
|
||||||
|
|
|
@ -27,7 +27,7 @@ use std::convert::{From, TryInto};
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
|
||||||
#[zero_copy]
|
#[zero_copy(unsafe)]
|
||||||
#[repr(packed)]
|
#[repr(packed)]
|
||||||
#[derive(Default, Debug, Eq, PartialEq, AnchorDeserialize)]
|
#[derive(Default, Debug, Eq, PartialEq, AnchorDeserialize)]
|
||||||
pub struct SwitchboardDecimal {
|
pub struct SwitchboardDecimal {
|
||||||
|
|
|
@ -3,7 +3,7 @@ use crate::prelude::*;
|
||||||
use rust_decimal::Decimal;
|
use rust_decimal::Decimal;
|
||||||
use std::cell::Ref;
|
use std::cell::Ref;
|
||||||
|
|
||||||
#[zero_copy]
|
#[zero_copy(unsafe)]
|
||||||
#[repr(packed)]
|
#[repr(packed)]
|
||||||
#[derive(Default, Debug, PartialEq, Eq)]
|
#[derive(Default, Debug, PartialEq, Eq)]
|
||||||
pub struct Hash {
|
pub struct Hash {
|
||||||
|
@ -11,7 +11,7 @@ pub struct Hash {
|
||||||
pub data: [u8; 32],
|
pub data: [u8; 32],
|
||||||
}
|
}
|
||||||
|
|
||||||
#[zero_copy]
|
#[zero_copy(unsafe)]
|
||||||
#[repr(packed)]
|
#[repr(packed)]
|
||||||
#[derive(Default, PartialEq, Eq)]
|
#[derive(Default, PartialEq, Eq)]
|
||||||
pub struct AggregatorRound {
|
pub struct AggregatorRound {
|
||||||
|
@ -53,8 +53,8 @@ pub enum AggregatorResolutionMode {
|
||||||
ModeSlidingResolution = 1,
|
ModeSlidingResolution = 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
// #[zero_copy]
|
// #[zero_copy(unsafe)]
|
||||||
#[account(zero_copy)]
|
#[account(zero_copy(unsafe))]
|
||||||
#[repr(packed)]
|
#[repr(packed)]
|
||||||
#[derive(PartialEq)]
|
#[derive(PartialEq)]
|
||||||
pub struct AggregatorAccountData {
|
pub struct AggregatorAccountData {
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
#![allow(unaligned_references)]
|
|
||||||
use crate::prelude::*;
|
use crate::prelude::*;
|
||||||
|
|
||||||
#[derive(AnchorDeserialize, Default, Debug)]
|
#[account]
|
||||||
pub struct BufferRelayerAccountData {
|
pub struct BufferRelayerAccountData {
|
||||||
/// Name of the buffer account to store on-chain.
|
/// Name of the buffer account to store on-chain.
|
||||||
pub name: [u8; 32],
|
pub name: [u8; 32],
|
||||||
|
@ -27,8 +26,7 @@ pub struct BufferRelayerAccountData {
|
||||||
pub result: Vec<u8>,
|
pub result: Vec<u8>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[zero_copy]
|
#[derive(Default, Clone, AnchorSerialize, AnchorDeserialize)]
|
||||||
#[derive(Default, Debug, AnchorSerialize, AnchorDeserialize)]
|
|
||||||
pub struct BufferRelayerRound {
|
pub struct BufferRelayerRound {
|
||||||
/// Number of successful responses.
|
/// Number of successful responses.
|
||||||
pub num_success: u32,
|
pub num_success: u32,
|
||||||
|
@ -98,11 +96,3 @@ impl BufferRelayerAccountData {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
impl Discriminator for BufferRelayerAccountData {
|
|
||||||
const DISCRIMINATOR: [u8; 8] = [50, 35, 51, 115, 169, 219, 158, 52];
|
|
||||||
}
|
|
||||||
impl Owner for BufferRelayerAccountData {
|
|
||||||
fn owner() -> Pubkey {
|
|
||||||
SWITCHBOARD_PROGRAM_ID
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
use crate::prelude::*;
|
use crate::prelude::*;
|
||||||
use bytemuck::{Pod, Zeroable};
|
use bytemuck::{Pod, Zeroable};
|
||||||
|
|
||||||
#[zero_copy]
|
#[zero_copy(unsafe)]
|
||||||
#[derive(Default)]
|
#[derive(Default)]
|
||||||
#[repr(packed)]
|
#[repr(packed)]
|
||||||
pub struct CrankRow {
|
pub struct CrankRow {
|
||||||
|
@ -13,7 +13,7 @@ pub struct CrankRow {
|
||||||
unsafe impl Pod for CrankRow {}
|
unsafe impl Pod for CrankRow {}
|
||||||
unsafe impl Zeroable for CrankRow {}
|
unsafe impl Zeroable for CrankRow {}
|
||||||
|
|
||||||
#[account(zero_copy)]
|
#[account(zero_copy(unsafe))]
|
||||||
#[repr(packed)]
|
#[repr(packed)]
|
||||||
pub struct CrankAccountData {
|
pub struct CrankAccountData {
|
||||||
/// Name of the crank to store on-chain.
|
/// Name of the crank to store on-chain.
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
use crate::prelude::*;
|
use crate::prelude::*;
|
||||||
use bytemuck::{Pod, Zeroable};
|
use bytemuck::{Pod, Zeroable};
|
||||||
|
|
||||||
#[zero_copy]
|
#[zero_copy(unsafe)]
|
||||||
#[repr(packed)]
|
#[repr(packed)]
|
||||||
pub struct AccountMetaZC {
|
pub struct AccountMetaZC {
|
||||||
pub pubkey: Pubkey,
|
pub pubkey: Pubkey,
|
||||||
|
@ -11,7 +11,7 @@ pub struct AccountMetaZC {
|
||||||
pub is_writable: bool,
|
pub is_writable: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[zero_copy]
|
#[zero_copy(unsafe)]
|
||||||
#[repr(packed)]
|
#[repr(packed)]
|
||||||
#[derive(AnchorSerialize, AnchorDeserialize)]
|
#[derive(AnchorSerialize, AnchorDeserialize)]
|
||||||
pub struct AccountMetaBorsh {
|
pub struct AccountMetaBorsh {
|
||||||
|
@ -20,7 +20,7 @@ pub struct AccountMetaBorsh {
|
||||||
pub is_writable: bool,
|
pub is_writable: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[zero_copy]
|
#[zero_copy(unsafe)]
|
||||||
#[repr(packed)]
|
#[repr(packed)]
|
||||||
pub struct CallbackZC {
|
pub struct CallbackZC {
|
||||||
/// The program ID of the callback program being invoked.
|
/// The program ID of the callback program being invoked.
|
||||||
|
@ -50,7 +50,7 @@ pub struct Callback {
|
||||||
pub ix_data: Vec<u8>,
|
pub ix_data: Vec<u8>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[zero_copy]
|
#[zero_copy(unsafe)]
|
||||||
#[repr(packed)]
|
#[repr(packed)]
|
||||||
pub struct VrfRound {
|
pub struct VrfRound {
|
||||||
/// The alpha bytes used to calculate the VRF proof.
|
/// The alpha bytes used to calculate the VRF proof.
|
||||||
|
@ -102,7 +102,7 @@ impl std::fmt::Display for VrfStatus {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[zero_copy]
|
#[zero_copy(unsafe)]
|
||||||
#[repr(packed)]
|
#[repr(packed)]
|
||||||
pub struct EcvrfProofZC {
|
pub struct EcvrfProofZC {
|
||||||
pub Gamma: EdwardsPointZC, // RistrettoPoint
|
pub Gamma: EdwardsPointZC, // RistrettoPoint
|
||||||
|
@ -118,7 +118,7 @@ impl Default for EcvrfProofZC {
|
||||||
/// The `Scalar` struct holds an integer \\(s < 2\^{255} \\) which
|
/// The `Scalar` struct holds an integer \\(s < 2\^{255} \\) which
|
||||||
/// represents an element of \\(\mathbb Z / \ell\\).
|
/// represents an element of \\(\mathbb Z / \ell\\).
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
#[zero_copy]
|
#[zero_copy(unsafe)]
|
||||||
#[repr(packed)]
|
#[repr(packed)]
|
||||||
pub struct Scalar {
|
pub struct Scalar {
|
||||||
/// `bytes` is a little-endian byte encoding of an integer representing a scalar modulo the
|
/// `bytes` is a little-endian byte encoding of an integer representing a scalar modulo the
|
||||||
|
@ -159,7 +159,7 @@ pub struct FieldElement51(pub(crate) [u64; 5]);
|
||||||
unsafe impl Pod for FieldElement51 {}
|
unsafe impl Pod for FieldElement51 {}
|
||||||
unsafe impl Zeroable for FieldElement51 {}
|
unsafe impl Zeroable for FieldElement51 {}
|
||||||
|
|
||||||
#[zero_copy]
|
#[zero_copy(unsafe)]
|
||||||
#[repr(packed)]
|
#[repr(packed)]
|
||||||
pub struct FieldElementZC {
|
pub struct FieldElementZC {
|
||||||
pub(crate) bytes: [u64; 5],
|
pub(crate) bytes: [u64; 5],
|
||||||
|
@ -198,7 +198,7 @@ pub struct CompletedPoint {
|
||||||
pub Z: FieldElement51,
|
pub Z: FieldElement51,
|
||||||
pub T: FieldElement51,
|
pub T: FieldElement51,
|
||||||
}
|
}
|
||||||
#[zero_copy]
|
#[zero_copy(unsafe)]
|
||||||
#[repr(packed)]
|
#[repr(packed)]
|
||||||
pub struct CompletedPointZC {
|
pub struct CompletedPointZC {
|
||||||
pub X: FieldElementZC,
|
pub X: FieldElementZC,
|
||||||
|
@ -244,7 +244,7 @@ pub struct EdwardsPoint {
|
||||||
pub(crate) T: FieldElement51,
|
pub(crate) T: FieldElement51,
|
||||||
}
|
}
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
#[zero_copy]
|
#[zero_copy(unsafe)]
|
||||||
#[repr(packed)]
|
#[repr(packed)]
|
||||||
pub struct EdwardsPointZC {
|
pub struct EdwardsPointZC {
|
||||||
pub(crate) X: FieldElementZC,
|
pub(crate) X: FieldElementZC,
|
||||||
|
@ -272,7 +272,7 @@ pub struct ProjectivePoint {
|
||||||
pub Y: FieldElement51,
|
pub Y: FieldElement51,
|
||||||
pub Z: FieldElement51,
|
pub Z: FieldElement51,
|
||||||
}
|
}
|
||||||
#[zero_copy]
|
#[zero_copy(unsafe)]
|
||||||
#[repr(packed)]
|
#[repr(packed)]
|
||||||
pub struct ProjectivePointZC {
|
pub struct ProjectivePointZC {
|
||||||
pub(crate) X: FieldElementZC,
|
pub(crate) X: FieldElementZC,
|
||||||
|
@ -305,7 +305,7 @@ impl Into<ProjectivePoint> for ProjectivePointZC {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[zero_copy]
|
#[zero_copy(unsafe)]
|
||||||
#[repr(packed)]
|
#[repr(packed)]
|
||||||
pub struct EcvrfIntermediate {
|
pub struct EcvrfIntermediate {
|
||||||
pub r: FieldElementZC,
|
pub r: FieldElementZC,
|
||||||
|
@ -318,7 +318,7 @@ unsafe impl Pod for EcvrfIntermediate {}
|
||||||
unsafe impl Zeroable for EcvrfIntermediate {}
|
unsafe impl Zeroable for EcvrfIntermediate {}
|
||||||
|
|
||||||
#[allow(non_snake_case)]
|
#[allow(non_snake_case)]
|
||||||
#[zero_copy]
|
#[zero_copy(unsafe)]
|
||||||
#[repr(packed)]
|
#[repr(packed)]
|
||||||
pub struct VrfBuilder {
|
pub struct VrfBuilder {
|
||||||
/// The OracleAccountData that is producing the randomness.
|
/// The OracleAccountData that is producing the randomness.
|
||||||
|
|
|
@ -4,7 +4,7 @@ use bytemuck::{Pod, Zeroable};
|
||||||
use std::cell::Ref;
|
use std::cell::Ref;
|
||||||
use superslice::*;
|
use superslice::*;
|
||||||
|
|
||||||
#[zero_copy]
|
#[zero_copy(unsafe)]
|
||||||
#[derive(Default)]
|
#[derive(Default)]
|
||||||
#[repr(packed)]
|
#[repr(packed)]
|
||||||
pub struct AggregatorHistoryRow {
|
pub struct AggregatorHistoryRow {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
use crate::prelude::*;
|
use crate::prelude::*;
|
||||||
|
|
||||||
#[account(zero_copy)]
|
#[account(zero_copy(unsafe))]
|
||||||
#[repr(packed)]
|
#[repr(packed)]
|
||||||
pub struct LeaseAccountData {
|
pub struct LeaseAccountData {
|
||||||
/// Public key of the token account holding the lease contract funds until rewarded to oracles for successfully processing updates
|
/// Public key of the token account holding the lease contract funds until rewarded to oracles for successfully processing updates
|
||||||
|
|
|
@ -10,7 +10,7 @@ pub enum OracleResponseType {
|
||||||
TypeNoResponse,
|
TypeNoResponse,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[zero_copy]
|
#[zero_copy(unsafe)]
|
||||||
#[derive(Default)]
|
#[derive(Default)]
|
||||||
#[repr(packed)]
|
#[repr(packed)]
|
||||||
pub struct OracleMetrics {
|
pub struct OracleMetrics {
|
||||||
|
@ -34,7 +34,7 @@ pub struct OracleMetrics {
|
||||||
pub total_late_response: u128,
|
pub total_late_response: u128,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[account(zero_copy)]
|
#[account(zero_copy(unsafe))]
|
||||||
#[repr(packed)]
|
#[repr(packed)]
|
||||||
pub struct OracleAccountData {
|
pub struct OracleAccountData {
|
||||||
/// Name of the oracle to store on-chain.
|
/// Name of the oracle to store on-chain.
|
||||||
|
|
|
@ -10,7 +10,7 @@ pub enum SwitchboardPermission {
|
||||||
PermitVrfRequests = 1 << 2,
|
PermitVrfRequests = 1 << 2,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[account(zero_copy)]
|
#[account(zero_copy(unsafe))]
|
||||||
#[repr(packed)]
|
#[repr(packed)]
|
||||||
pub struct PermissionAccountData {
|
pub struct PermissionAccountData {
|
||||||
/// The authority that is allowed to set permissions for this account.
|
/// The authority that is allowed to set permissions for this account.
|
||||||
|
|
|
@ -3,7 +3,7 @@ use crate::prelude::*;
|
||||||
use bytemuck::try_cast_slice_mut;
|
use bytemuck::try_cast_slice_mut;
|
||||||
use std::cell::Ref;
|
use std::cell::Ref;
|
||||||
|
|
||||||
#[account(zero_copy)]
|
#[account(zero_copy(unsafe))]
|
||||||
#[repr(packed)]
|
#[repr(packed)]
|
||||||
pub struct OracleQueueAccountData {
|
pub struct OracleQueueAccountData {
|
||||||
/// Name of the queue to store on-chain.
|
/// Name of the queue to store on-chain.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
use crate::prelude::*;
|
use crate::prelude::*;
|
||||||
|
|
||||||
#[account(zero_copy)]
|
#[account(zero_copy(unsafe))]
|
||||||
#[repr(packed)]
|
#[repr(packed)]
|
||||||
pub struct SbState {
|
pub struct SbState {
|
||||||
/// The account authority permitted to make account changes.
|
/// The account authority permitted to make account changes.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
use crate::prelude::*;
|
use crate::prelude::*;
|
||||||
|
|
||||||
#[zero_copy]
|
#[zero_copy(unsafe)]
|
||||||
#[derive(Default)]
|
#[derive(Default)]
|
||||||
#[repr(packed)]
|
#[repr(packed)]
|
||||||
pub struct SlidingWindowElement {
|
pub struct SlidingWindowElement {
|
||||||
|
@ -10,7 +10,7 @@ pub struct SlidingWindowElement {
|
||||||
pub timestamp: i64,
|
pub timestamp: i64,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[account(zero_copy)]
|
#[account(zero_copy(unsafe))]
|
||||||
#[repr(packed)]
|
#[repr(packed)]
|
||||||
pub struct SlidingResultAccountData {
|
pub struct SlidingResultAccountData {
|
||||||
pub data: [SlidingWindowElement; 16],
|
pub data: [SlidingWindowElement; 16],
|
||||||
|
|
|
@ -7,7 +7,7 @@ use std::cell::Ref;
|
||||||
// VrfSetCallback
|
// VrfSetCallback
|
||||||
// VrfClose
|
// VrfClose
|
||||||
|
|
||||||
#[account(zero_copy)]
|
#[account(zero_copy(unsafe))]
|
||||||
#[repr(packed)]
|
#[repr(packed)]
|
||||||
pub struct VrfAccountData {
|
pub struct VrfAccountData {
|
||||||
/// The current status of the VRF account.
|
/// The current status of the VRF account.
|
||||||
|
|
|
@ -3,7 +3,7 @@ use crate::cfg_client;
|
||||||
use crate::prelude::*;
|
use crate::prelude::*;
|
||||||
use std::cell::Ref;
|
use std::cell::Ref;
|
||||||
|
|
||||||
#[account(zero_copy)]
|
#[account(zero_copy(unsafe))]
|
||||||
#[repr(packed)]
|
#[repr(packed)]
|
||||||
pub struct VrfLiteAccountData {
|
pub struct VrfLiteAccountData {
|
||||||
/// The bump used to derive the SbState account.
|
/// The bump used to derive the SbState account.
|
||||||
|
|
|
@ -15,7 +15,7 @@ pub struct VrfPoolRow {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[repr(packed)]
|
#[repr(packed)]
|
||||||
#[account(zero_copy)]
|
#[account(zero_copy(unsafe))]
|
||||||
pub struct VrfPoolAccountData {
|
pub struct VrfPoolAccountData {
|
||||||
/// ACCOUNTS
|
/// ACCOUNTS
|
||||||
pub authority: Pubkey, // authority can never be changed or else vrf accounts are useless
|
pub authority: Pubkey, // authority can never be changed or else vrf accounts are useless
|
||||||
|
|
Loading…
Reference in New Issue