Solana Anchor 如何测试不同 Signer 与程序功能的交互
Solana Anchor How to test different Signers interacting with program functions
如果黑客可以调用或调用某些程序功能,我如何在 Solana Anchor 中进行测试?
是否通过更改 signers 数组中的第一个元素:
await program.rpc.initializeProgram(
arg1, arg2, ... {
accounts: {...}
signers: [keypair1, keypair2, ... keypairN],
)
但是在一些教程案例中,这个signers数组被省略了...
我可以在 Anchor 的哪个位置设置调用方用于签署交易的密钥对?
参见 https://project-serum.github.io/anchor/tutorials/tutorial-1
中的示例锚代码
关键词:智能合约,安全测试
对于您的锚点测试,它将使用 provider.wallet 作为付款人,因此会自动使用 provider.wallet 作为签名者。
您还可以通过签名者数组字段将签名者添加到您的 javascript 调用中,以防您的程序要求他们成为签名者。
教程 1 在这里不是一个实际的例子,因为任何人都可以进来修改帐户。
默认情况下,锚点测试使用 provider.wallet 作为交易的付款人和签名人。如果你想使用另一个钱包,你必须创建另一个锚程序实例,按照下面的功能。
import * as anchor from '@project-serum/anchor';
import { provider, program } from '../config';
export function programPaidBy(payer: anchor.web3.Keypair): anchor.Program {
const newProvider = new anchor.Provider(provider.connection, new anchor.Wallet(payer), {});
return new anchor.Program(program.idl as anchor.Idl, program.programId, newProvider)
}
如果黑客可以调用或调用某些程序功能,我如何在 Solana Anchor 中进行测试?
是否通过更改 signers 数组中的第一个元素:
await program.rpc.initializeProgram(
arg1, arg2, ... {
accounts: {...}
signers: [keypair1, keypair2, ... keypairN],
)
但是在一些教程案例中,这个signers数组被省略了... 我可以在 Anchor 的哪个位置设置调用方用于签署交易的密钥对?
参见 https://project-serum.github.io/anchor/tutorials/tutorial-1
中的示例锚代码关键词:智能合约,安全测试
对于您的锚点测试,它将使用 provider.wallet 作为付款人,因此会自动使用 provider.wallet 作为签名者。
您还可以通过签名者数组字段将签名者添加到您的 javascript 调用中,以防您的程序要求他们成为签名者。
教程 1 在这里不是一个实际的例子,因为任何人都可以进来修改帐户。
默认情况下,锚点测试使用 provider.wallet 作为交易的付款人和签名人。如果你想使用另一个钱包,你必须创建另一个锚程序实例,按照下面的功能。
import * as anchor from '@project-serum/anchor';
import { provider, program } from '../config';
export function programPaidBy(payer: anchor.web3.Keypair): anchor.Program {
const newProvider = new anchor.Provider(provider.connection, new anchor.Wallet(payer), {});
return new anchor.Program(program.idl as anchor.Idl, program.programId, newProvider)
}