#[queue_computation_accounts]
#[derive(Accounts)]
pub struct Flip<'info> {
#[account(mut)]
pub payer: Signer<'info>,
#[account(
init_if_needed,
space = 9,
payer = payer,
seeds = [&SIGN_PDA_SEED],
bump,
address = derive_sign_pda!(),
)]
pub sign_pda_account: Account<'info, SignerAccount>,
// ... other existing accounts
}
pub fn flip(
ctx: Context<Flip>,
computation_offset: u64,
user_choice: [u8; 32],
pub_key: [u8; 32],
nonce: u128,
) -> Result<()> {
let args = vec![
Argument::ArcisPubkey(pub_key),
Argument::PlaintextU128(nonce),
Argument::EncryptedU8(user_choice),
];
ctx.accounts.sign_pda_account.bump = ctx.bumps.sign_pda_account;
queue_computation(
ctx.accounts,
computation_offset,
args,
None,
vec![FlipCallback::callback_ix(&[])],
)?;
Ok(())
}