UpdateTargets

Struct UpdateTargets 

Source
#[repr(C)]
pub struct UpdateTargets { pub claim_rewards_threshold: [u8; 8], pub target_weekly_users: [u8; 4], pub target_weekly_activity: [u8; 4], pub max_customer_activity_per_epoch: [u8; 4], pub max_merchant_activity_per_epoch: [u8; 4], pub target_retention_rate: [u8; 2], pub activity_cap_enabled: u8, pub claim_cap_enabled: u8, pub _padding: [u8; 4], }
Expand description

Update community targets, activity limits, and claim rewards threshold. This instruction allows the oracle to update community health targets, activity limits, and claim rewards threshold based on real-world community performance and operational needs.

§Data Structure

Fixed-size struct (28 bytes) containing all configurable parameters:

struct UpdateTargets {
    // Claim Rewards Threshold
    claim_rewards_threshold: [u8; 8],           // u64

    // Community Health Targets
    target_weekly_users: [u8; 4],           // u32
    target_weekly_activity: [u8; 4],        // u32  
    target_retention_rate: [u8; 2],         // u16

    // Activity Limits
    max_customer_activity_per_epoch: [u8; 4],  // u32
    max_merchant_activity_per_epoch: [u8; 4],  // u32
    activity_cap_enabled: u8,                   // u8
    claim_cap_enabled: u8,                   // u8

    // Padding
    _padding: [u8; 4],                          // 4 bytes padding
}

§Parameters

  • target_weekly_users: Target weekly active users (default: 10,000)
  • target_weekly_activity: Target weekly activity count (default: 50,000)
  • target_retention_rate: Target retention rate in basis points (default: 7,000 = 70%)
  • max_customer_activity_per_epoch: Max customer activities per epoch (default: 5)
  • max_merchant_activity_per_epoch: Max merchant activities per epoch (default: 50)
  • activity_cap_enabled: Whether activity capping is enabled (default: 1 = enabled)
  • claim_cap_enabled: Whether claim capping is enabled (default: 1 = enabled)
  • claim_rewards_threshold: Risk threshold for rewards claim requests (default: BASE_DAILY_REWARDS)

§Authority

  • Oracle Authority: Only the oracle can update these parameters
  • Rationale: Oracle has the data to make informed decisions about community health

§Benefits

  • Operational Flexibility: Adjust parameters based on real community performance
  • Anti-Gaming: Update activity limits to prevent new gaming strategies
  • Community Adaptation: Adjust targets as community grows and evolves
  • Economic Balance: Fine-tune parameters for sustainable tokenomics
  • Risk Management: Adjust claim rewards threshold based on market conditions

Fields§

§claim_rewards_threshold: [u8; 8]

Risk threshold for rewards claim requests.

§target_weekly_users: [u8; 4]

Target weekly active users for sustainable rewards.

§target_weekly_activity: [u8; 4]

Target weekly activity count for sustainable rewards.

§max_customer_activity_per_epoch: [u8; 4]

Maximum customer activity count per epoch (prevents payment splitting).

§max_merchant_activity_per_epoch: [u8; 4]

Maximum merchant activity count per epoch (prevents payment splitting).

§target_retention_rate: [u8; 2]

Target weekly retention rate in basis points (0-10000).

§activity_cap_enabled: u8

Whether activity capping is enabled (1=enabled, 0=disabled).

§claim_cap_enabled: u8

Whether claim capping is enabled (1=enabled, 0=disabled).

§_padding: [u8; 4]

Padding to ensure proper alignment (4 bytes).

Implementations§

Trait Implementations§

Source§

impl Clone for UpdateTargets

Source§

fn clone(&self) -> UpdateTargets

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for UpdateTargets

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Discriminator for UpdateTargets

Source§

impl Zeroable for UpdateTargets

Source§

fn zeroed() -> Self

Source§

impl Copy for UpdateTargets

Source§

impl Pod for UpdateTargets

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> AccountDeserialize for T
where T: Discriminator + Pod,

Source§

impl<T> AccountHeaderDeserialize for T
where T: Discriminator + Pod,

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Az for T

Source§

fn az<Dst>(self) -> Dst
where T: Cast<Dst>,

Casts the value.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<Src, Dst> CastFrom<Src> for Dst
where Src: Cast<Dst>,

Source§

fn cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T> CheckedAs for T

Source§

fn checked_as<Dst>(self) -> Option<Dst>
where T: CheckedCast<Dst>,

Casts the value.
Source§

impl<T> CheckedBitPattern for T
where T: AnyBitPattern,

Source§

type Bits = T

Self must have the same layout as the specified Bits except for the possible invalid bit patterns being checked during is_valid_bit_pattern.
Source§

fn is_valid_bit_pattern(_bits: &T) -> bool

If this function returns true, then it must be valid to reinterpret bits as &Self.
Source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where Src: CheckedCast<Dst>,

Source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<Src, Dst> LosslessTryInto<Dst> for Src
where Dst: LosslessTryFrom<Src>,

Source§

fn lossless_try_into(self) -> Option<Dst>

Performs the conversion.
Source§

impl<Src, Dst> LossyInto<Dst> for Src
where Dst: LossyFrom<Src>,

Source§

fn lossy_into(self) -> Dst

Performs the conversion.
Source§

impl<T> OverflowingAs for T

Source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where T: OverflowingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where Src: OverflowingCast<Dst>,

Source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> SaturatingAs for T

Source§

fn saturating_as<Dst>(self) -> Dst
where T: SaturatingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where Src: SaturatingCast<Dst>,

Source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> UnwrappedAs for T

Source§

fn unwrapped_as<Dst>(self) -> Dst
where T: UnwrappedCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where Src: UnwrappedCast<Dst>,

Source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WrappingAs for T

Source§

fn wrapping_as<Dst>(self) -> Dst
where T: WrappingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where Src: WrappingCast<Dst>,

Source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T> AnyBitPattern for T
where T: Pod,

Source§

impl<T> NoUninit for T
where T: Pod,