需要交易最近的区块哈希 - Phantom Wallet Solana

Mir*_*ono 3 solana

Uncaught (in promise) WalletSignTransactionError: Transaction recentBlockhash required
at PhantomWalletAdapter.signTransaction (adapter.ts:215:1)
at async WalletProvider.tsx:247:1
at async mintNFT (luckoo.tsx:100:1)
Run Code Online (Sandbox Code Playgroud)

当我尝试使用 solana 钱包发送交易时收到此消息,我该怎么办?

Jon*_*n C 6

您需要在交易中提供recentBlockhash以便对其进行签名。最有可能的是,您需要获取一个区块哈希并在使用 签署交易之前添加它getLatestBlockhash,即:

let blockhash = (await connection.getLatestBlockhash('finalized')).blockhash;
transaction.recentBlockhash = blockhash;
Run Code Online (Sandbox Code Playgroud)

以前,您将使用类似的已弃用函数getRecentBlockhash

let blockhash = await connection.getRecentBlockhash('finalized').blockhash;
transaction.recentBlockhash = blockhash;
Run Code Online (Sandbox Code Playgroud)

您更好的选择是直接使用sendTransaction,它可以为您完成所有这些工作。正如您在源代码中看到的,sendTransaction如果最近的块哈希尚不存在,则填写它: https: //github.com/solana-labs/wallet-adapter/blob/a5b1ebd70ae9753d188fec60e95e252402f3f371/packages/core/base/src /signer.ts#L13