#[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§
Source§impl UpdateTargets
impl UpdateTargets
pub fn try_from_bytes(data: &[u8]) -> Result<&Self, ProgramError>
Trait Implementations§
Source§impl Clone for UpdateTargets
impl Clone for UpdateTargets
Source§fn clone(&self) -> UpdateTargets
fn clone(&self) -> UpdateTargets
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for UpdateTargets
impl Debug for UpdateTargets
Source§impl Discriminator for UpdateTargets
impl Discriminator for UpdateTargets
fn discriminator() -> u8
impl Copy for UpdateTargets
impl Pod for UpdateTargets
Auto Trait Implementations§
impl Freeze for UpdateTargets
impl RefUnwindSafe for UpdateTargets
impl Send for UpdateTargets
impl Sync for UpdateTargets
impl Unpin for UpdateTargets
impl UnwindSafe for UpdateTargets
Blanket Implementations§
Source§impl<T> AccountDeserialize for Twhere
T: Discriminator + Pod,
impl<T> AccountDeserialize for Twhere
T: Discriminator + Pod,
fn try_from_bytes(data: &[u8]) -> Result<&T, ProgramError>
fn try_from_bytes_mut(data: &mut [u8]) -> Result<&mut T, ProgramError>
Source§impl<T> AccountHeaderDeserialize for Twhere
T: Discriminator + Pod,
impl<T> AccountHeaderDeserialize for Twhere
T: Discriminator + Pod,
fn try_header_from_bytes(data: &[u8]) -> Result<(&T, &[u8]), ProgramError>
fn try_header_from_bytes_mut( data: &mut [u8], ) -> Result<(&mut T, &mut [u8]), ProgramError>
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CheckedAs for T
impl<T> CheckedAs for T
Source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
Source§impl<T> CheckedBitPattern for Twhere
T: AnyBitPattern,
impl<T> CheckedBitPattern for Twhere
T: AnyBitPattern,
Source§type Bits = T
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
fn is_valid_bit_pattern(_bits: &T) -> bool
bits
as &Self
.Source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
Source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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