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

Download history 1/week @ 2024-06-29 116/week @ 2024-07-06 21/week @ 2024-07-13 1/week @ 2024-07-20 62/week @ 2024-07-27 1/week @ 2024-08-03

每月67 次下载

Apache-2.0

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