如何在 Solana Anchor 中测试黑客是否可以调用或调用某些程序函数?
是通过更改签名者数组中的第一个元素来实现的吗:
await program.rpc.initializeProgram(
arg1, arg2, ... {
accounts: {...}
signers: [keypair1, keypair2, ... keypairN],
)
Run Code Online (Sandbox Code Playgroud)
但在某些教程案例中,此签名者数组被省略...在 Anchor 中的哪里可以设置用于签署交易的调用者密钥对?
请参阅https://project-serum.github.io/anchor/tutorials/tutorial-1中的示例锚代码
关键词:智能合约、安全测试
对于您的锚定测试,它将使用provider.wallet作为付款人,从而自动使用provider.wallet作为签名人。
您还可以通过 Signers 数组字段将签名者添加到 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)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2680 次 |
| 最近记录: |