add CreateReferralLog (#18)

This commit is contained in:
riordanp 2024-10-14 11:23:38 +01:00 committed by GitHub
parent 1bf5e6e2b6
commit f9e8f8bf7c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 30 additions and 0 deletions

View File

@ -166,6 +166,10 @@ async fn main() -> Result<(), anyhow::Error> {
let event = bytemuck::from_bytes::<ReferrerWithdrawLog>(&decoded[8..]);
println!("ReferrerWithdrawLog - referer: {:?}, referer_token_account: {:?}, amount: {}", event.referer, event.referer_token_account, event.amount);
}
&CREATE_REFERRAL_LOG_DISCRIMINANT => {
let event = bytemuck::from_bytes::<CreateReferralLog>(&decoded[8..]);
println!("CreateReferralLog - referer: {:?}, referee: {:?}, vault: {:?}, mint: {:?}", event.referer, event.referee, event.vault, event.mint);
}
_ => panic!("Unknown log discriminant"),
}
}

View File

@ -10,6 +10,8 @@ use solana_program::sysvar::Sysvar;
use crate::create_pda::create_pda_account;
use crate::logs::{emit_stack, CreateReferralLog};
pub fn execute_create_referral(accounts: &[AccountInfo], instruction_data: &[u8]) -> ProgramResult {
if let [payer, referrer, vault, mint, system_program, token_program] = accounts {
// verify token program is passed
@ -56,6 +58,13 @@ pub fn execute_create_referral(accounts: &[AccountInfo], instruction_data: &[u8]
let initialize_account_infos = [vault.clone(), mint.clone(), token_program.clone()];
invoke(&initialize_ix, &initialize_account_infos)?;
emit_stack(CreateReferralLog {
referee: *payer.key,
referer: *referrer.key,
vault: *vault.key,
mint: *mint.key,
})?;
Ok(())
} else {
Err(ProgramError::NotEnoughAccountKeys)

View File

@ -84,10 +84,20 @@ pub struct ReferrerWithdrawLog {
pub amount: u64,
}
#[repr(C)]
#[derive(Clone, Copy, Zeroable, Pod)]
pub struct CreateReferralLog {
pub referee: Pubkey,
pub referer: Pubkey,
pub vault: Pubkey,
pub mint: Pubkey,
}
pub const PLATFORM_FEE_LOG_DISCRIMINANT: [u8; 8] = [160, 183, 104, 34, 255, 190, 119, 188];
pub const REFERRER_FEE_LOG_DISCRIMINANT: [u8; 8] = [198, 149, 221, 27, 28, 103, 76, 95];
pub const REFERRER_WITHDRAW_LOG_DISCRIMINANT: [u8; 8] = [25, 7, 239, 41, 67, 36, 141, 92];
pub const SWAP_EVENT_DISCRIMINANT: [u8; 8] = [56, 178, 48, 245, 42, 152, 27, 75];
pub const CREATE_REFERRAL_LOG_DISCRIMINANT: [u8; 8] = [114, 188, 157, 65, 100, 179, 129, 169];
discriminant!(
PlatformFeeLog,
@ -106,6 +116,13 @@ discriminant!(
REFERRER_WITHDRAW_LOG_DISCRIMINANT,
test_referrer_withdraw_log
);
discriminant!(
CreateReferralLog,
CREATE_REFERRAL_LOG_DISCRIMINANT,
test_create_referral_log
);
discriminant!(SwapEvent, SWAP_EVENT_DISCRIMINANT, test_swap_event);
/// Canonical discriminant of the given struct. It is the hash of program ID and