8个版本 (破坏性)
0.6.1 | 2024年7月11日 |
---|---|
0.6.0 | 2024年3月28日 |
0.5.0 | 2024年1月19日 |
0.4.0 | 2023年12月11日 |
0.0.1 | 2023年5月18日 |
#32 在 #spl
每月67 次下载
1.5MB
26K SLoC
转账钩子示例
完整示例程序和测试实现 spl-transfer-hook-interface
,用于测试调用 spl-transfer-hook-interface
的程序。
有关更多信息,请参阅 SPL转账钩子接口 代码。
示例用法
在测试使用 spl-transfer-hook-interface
的程序时,您还可以导入此crate,然后使用 solana-program-test
,即
use {
solana_program_test::{processor, ProgramTest},
solana_sdk::{account::Account, instruction::AccountMeta},
spl_transfer_hook_example::state::example_data,
spl_transfer_hook_interface::get_extra_account_metas_address,
};
#[test]
fn my_program_test() {
let mut program_test = ProgramTest::new(
"my_program",
my_program_id,
processor!(my_program_processor),
);
let transfer_hook_program_id = Pubkey::new_unique();
program_test.prefer_bpf(false); // BPF won't work, unless you've built this from scratch!
program_test.add_program(
"spl_transfer_hook_example",
transfer_hook_program_id,
processor!(spl_transfer_hook_example::processor::process),
);
let mint = Pubkey::new_unique();
let extra_accounts_address = get_extra_account_metas_address(&mint, &transfer_hook_program_id);
let account_metas = vec![
AccountMeta {
pubkey: Pubkey::new_unique(),
is_signer: false,
is_writable: false,
},
AccountMeta {
pubkey: Pubkey::new_unique(),
is_signer: false,
is_writable: false,
},
];
let data = example_data(&account_metas);
program_test.add_account(
extra_accounts_address,
Account {
lamports: 1_000_000_000, // a lot, just to be safe
data,
owner: transfer_hook_program_id,
..Account::default()
},
);
// run your test logic!
}
依赖项
~21–30MB
~493K SLoC