mirror of
https://github.com/d0zingcat/ore.git
synced 2026-05-14 07:26:51 +00:00
36 lines
1.1 KiB
Rust
36 lines
1.1 KiB
Rust
use steel::*;
|
|
|
|
use crate::{instruction::*, state::*};
|
|
|
|
pub fn bet(
|
|
signer: Pubkey,
|
|
mint: Pubkey,
|
|
amount: u64,
|
|
id: u64,
|
|
round: u64,
|
|
seed: Option<[u8; 32]>,
|
|
) -> Instruction {
|
|
let sender = spl_associated_token_account::get_associated_token_address(&signer, &mint);
|
|
let block = block_pda().0;
|
|
let block_bets = spl_associated_token_account::get_associated_token_address(&signer, &mint);
|
|
let wager = wager_pda(round, id).0;
|
|
Instruction {
|
|
program_id: crate::ID,
|
|
accounts: vec![
|
|
AccountMeta::new(signer, true),
|
|
AccountMeta::new(block, false),
|
|
AccountMeta::new(block_bets, false),
|
|
AccountMeta::new(sender, false),
|
|
AccountMeta::new(wager, false),
|
|
AccountMeta::new_readonly(spl_token::ID, false),
|
|
AccountMeta::new_readonly(spl_associated_token_account::ID, false),
|
|
AccountMeta::new_readonly(sysvar::slot_hashes::ID, false),
|
|
],
|
|
data: Bet {
|
|
amount: amount.to_le_bytes(),
|
|
seed: seed.unwrap_or([0; 32]),
|
|
}
|
|
.to_bytes(),
|
|
}
|
|
}
|