获取Solana Py交易中的账户数据长度



我正在构建一个程序来对solana上的事务进行联合签名。

签名机制是有效的,但现在我正试图从我收到的交易中提取账户数据长度,因为我想计算创建账户的成本。

我将这个交易从前端发送到后端以进行联合签名:

await program.value.transaction.sendTweet(topic, content, {
accounts: {
author: wallet.value.publicKey,
feePayer: company_account_pubkey,
tweet: tweet.publicKey,
systemProgram: web3.SystemProgram.programId,
}
});

合同是:

#[derive(Accounts)]
pub struct SendTweet<'info> {
#[account(init, payer = feePayer, space = 1372)]
pub tweet: Account<'info, Tweet>,
#[account(mut)]
pub author: Signer<'info>,
#[account(mut)]
pub feePayer: Signer<'info>,
#[account(address = system_program::ID)]
pub system_program: AccountInfo<'info>,
}
#[account]
pub struct Tweet {
pub author: Pubkey,
pub timestamp: i64,
pub topic: String,
pub content: String,
}

所以只要看一下合同,我就能理解所需的空间将是1372。

但我的服务将与许多其他程序交互,所以我希望能够根据我收到的交易提取账户数据长度。

在solana py上,我知道我可以用tx.instructions[0].data获得数据,我知道用client.get_minimum_balance_for_rent_exemption(1372)可以获得租金

但我不知道如何从交易本身中提取账户的规模。

我错过了什么?

我认为交易信息中不包括账户的大小。它可能隐藏在某个getTransaction返回值中,但最有可能的是,您必须进行一个getAccountInfo调用,该调用将包括数据,并且您可以检查它返回的data的长度。

相关内容

  • 没有找到相关文章

最新更新