我已经分叉了metaplex 代码,并且正在尝试实现具有预售功能的糖果机。您可以查看此拉取请求以供参考:https ://github.com/FluffyPorcupine/metaplex/pull/1/files 。我已经修改了 rust lib.rs 和 candy-machine-cli.ts 文件来实现我认为它可能工作的方式。
我能够成功地将程序部署到 solana 和锚点,将 idl 部署到锚点(按照这些步骤),并使用 cli 将文件上传到 assets 文件夹中。我的下一步是尝试并实际创建一个糖果机。这是我要运行的命令:
ts-node js/packages/cli/src/candy-machine-cli.ts create_candy_machine --env devnet --keypair .config/solana/devnet.json --presale-enabled true --presale-items-available 5
当我运行命令时,我得到以下堆栈跟踪:
ProgramError: 102: The program could not deserialize the given instruction
at Function.parse (/home/my-user/dev/Solana/metaplex/js/packages/cli/node_modules/@project-serum/anchor/src/error.ts:41:14)
at Object.rpc [as initializeCandyMachine] (/home/my-user/dev/Solana/metaplex/js/packages/cli/node_modules/@project-serum/anchor/src/program/namespace/rpc.ts:23:42)
at processTicksAndRejections (node:internal/process/task_queues:96:5) { code: 102,
msg: 'The program could not deserialize the given instruction'
}
我对调试 rust/anchor 非常陌生。我的代码中有什么东西对某人来说很明显,为什么我会根据我在 PR 中对相关文件的更改而收到此错误?或者关于我可以调试它的方法的任何提示?我也尝试过运行“锚点测试”,但得到了同样的错误。