29 lines
678 B
Rust
29 lines
678 B
Rust
![]() |
//! @brief Example Rust-based BPF program that issues a cross-program-invocation
|
||
|
|
||
|
use solana_sdk::{
|
||
|
instruction::{AccountMeta, Instruction},
|
||
|
pubkey::Pubkey,
|
||
|
};
|
||
|
|
||
|
pub fn create_instruction(
|
||
|
program_id: Pubkey,
|
||
|
arguments: &[(&Pubkey, bool, bool)],
|
||
|
data: Vec<u8>,
|
||
|
) -> Instruction {
|
||
|
let accounts = arguments
|
||
|
.iter()
|
||
|
.map(|(key, is_writable, is_signer)| {
|
||
|
if *is_writable {
|
||
|
AccountMeta::new(**key, *is_signer)
|
||
|
} else {
|
||
|
AccountMeta::new_readonly(**key, *is_signer)
|
||
|
}
|
||
|
})
|
||
|
.collect();
|
||
|
Instruction {
|
||
|
program_id,
|
||
|
accounts,
|
||
|
data,
|
||
|
}
|
||
|
}
|