From 49418e94c785b16e60bd277ce7fea8ecd44d934c Mon Sep 17 00:00:00 2001 From: Hardhat Chad Date: Mon, 7 Oct 2024 16:46:37 +0000 Subject: [PATCH] add sdk --- api/src/sdk.rs | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/api/src/sdk.rs b/api/src/sdk.rs index 0c5d797..8c9cb11 100644 --- a/api/src/sdk.rs +++ b/api/src/sdk.rs @@ -51,18 +51,29 @@ pub fn close(signer: Pubkey) -> Instruction { } /// Builds a mine instruction. -pub fn mine(signer: Pubkey, authority: Pubkey, bus: Pubkey, solution: Solution) -> Instruction { +pub fn mine( + signer: Pubkey, + authority: Pubkey, + bus: Pubkey, + solution: Solution, + boost_accounts: Vec, +) -> Instruction { let proof = proof_pda(authority).0; + let required_accounts = vec![ + AccountMeta::new(signer, true), + AccountMeta::new(bus, false), + AccountMeta::new_readonly(CONFIG_ADDRESS, false), + AccountMeta::new(proof, false), + AccountMeta::new_readonly(sysvar::instructions::id(), false), + AccountMeta::new_readonly(sysvar::slot_hashes::id(), false), + ]; + let optional_accounts = boost_accounts + .into_iter() + .map(|pk| AccountMeta::new_readonly(pk, false)) + .collect(); Instruction { program_id: crate::id(), - accounts: vec![ - AccountMeta::new(signer, true), - AccountMeta::new(bus, false), - AccountMeta::new_readonly(CONFIG_ADDRESS, false), - AccountMeta::new(proof, false), - AccountMeta::new_readonly(sysvar::instructions::id(), false), - AccountMeta::new_readonly(sysvar::slot_hashes::id(), false), - ], + accounts: [required_accounts, optional_accounts].concat(), data: Mine { digest: solution.d, nonce: solution.n,