索拉纳井字游戏-错误的秘密密钥大小



我克隆了一个井字游戏存储库来理解智能合约和rust的逻辑。它正在道德上工作,需要两个玩家钱包地址来玩/创建游戏,但是当我添加第二个幻影钱包(它们都是我的钱包,但有不同的地址)时,我得到这个错误:


wait  - compiling /api/TicTacToe/newGame...
event - compiled successfully in 101 ms (51 modules)
error - Error: bad secret key size
at Function.fromSecretKey (/home/aleyna/tmp/solana-smart-contract-tic-tac-toe/node_modules/@solana/web3.js/lib/index.cjs.js:7497:13)
at handler (webpack-internal:///(api)/./pages/api/TicTacToe/newGame.ts:23:74)
at Object.apiResolver (/home/aleyna/tmp/solana-smart-contract-tic-tac-toe/node_modules/next/dist/server/api-utils/node.js:184:15)
at runMicrotasks (<anonymous>)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async DevServer.runApi (/home/aleyna/tmp/solana-smart-contract-tic-tac-toe/node_modules/next/dist/server/next-server.js:403:9)
at async Object.fn (/home/aleyna/tmp/solana-smart-contract-tic-tac-toe/node_modules/next/dist/server/base-server.js:493:37)
at async Router.execute (/home/aleyna/tmp/solana-smart-contract-tic-tac-toe/node_modules/next/dist/server/router.js:222:36)
at async DevServer.run (/home/aleyna/tmp/solana-smart-contract-tic-tac-toe/node_modules/next/dist/server/base-server.js:612:29)
at async DevServer.run (/home/aleyna/tmp/solana-smart-contract-tic-tac-toe/node_modules/next/dist/server/dev/next-dev-server.js:569:20) {
page: '/api/TicTacToe/newGame'
}

我可以理解这个问题与我的密钥大小有关,但我不知道如何修复它。

这个错误可能来自这行代码。它使用长度为5的连接地址字符串来创建PDA帐户的唯一秘密。

// Account Creation --- Start
const GAME_ACCOUNT_SECRET = `${player1.substring(0, 5)}${player2.substring(0, 5)}`;

尝试通过将子字符串长度减少到4或更少来更新它到这一行。

const GAME_ACCOUNT_SECRET = `${player1.substring(0, 4)}${player2.substring(0, 4)}`;