这里的account指的是Account中存储的具体数据结构,例子如下:
#[account]
#[derive(InitSpace, Debug, PartialEq)]
pub struct TestVec {
#[max_len(2)]
pub v1: Vec<u64>,
#[max_len(2)]
pub v2: Vec<u64>,
}
// 下方是个在Context中使用的account列表(Accounts)
#[derive(Accounts)]
pub struct Initialize<'info> {
#[account(mut)]
pub payer: Signer<'info>,
#[account(
init,
seeds = ["TEST_VEC".as_bytes()],
bump,
payer = payer,
space = 4 + std::mem::size_of::<TestVec>(),
)]
pub test_vec: Account<'info, TestVec>,
pub chall: Program<'info, Chall>,
pub solve: Program<'info, Solve>,
pub rent: Sysvar<'info, Rent>,
pub clock: Sysvar<'info, Clock>,
pub system_program: Program<'info, System>,
}
介绍一下容易出错的一些属性:
max_len
:用于Vec,指示该数组最大的长度。但需要注意,这并不是一种限制,仅用于帮助anchor计算该Vec的大小。