我正在进行随机交易,使用 Wrapped Solana 代币账户购买代币 该账户在我的主账户下(所有者:我的主账户)并且有余额 因此,我正在执行它:
swap_associated_token_address = Pubkey.from_string("address")
swap_tx = Transaction(recent_blockhash = block_hash)
instructions_swap = swap_inst(amount,
wsol_kp.pubkey(),
swap_associated_token_address,
keys,
payer)
swap_tx.add(set_compute_unit_limit(GAS_LIMIT))
swap_tx.add(set_compute_unit_price(GAS_PRICE))
swap_tx.add(instructions_swap)
async_client = AsyncClient(ENDPOINT1,
commitment=Confirmed,
timeout=30)
txn = await async_client.send_transaction(swap_tx,
payer,
wsol_kp)
代码中: 付款人是主账户的Keypair wsol_kp 是包装的 Solana 令牌帐户的密钥对 金额为 int() 键是一个字典 bloch_hash 是一个区块哈希
这是我从 send_transaction 得到的响应:
SignerError:密钥对-公钥不匹配
我缺少什么?
我几乎尝试了所有搜索solana食谱和其他地方。
错误消息
SignerError: keypair-pubkey mismatch
通常表明密钥对的通用公钥与交易中预期的公钥之间存在不匹配。
在您的情况下,您使用的是密钥对:
payer
和wsol_kp
。 payer
密钥对用于支付交易,wsol_kp
密钥对用于 Wrapped Solana 代币账户。
以下是您可以查看的一些内容:
密钥对初始化:确保每个
payer
和 wsol_kp
密钥对均已有效初始化并加载正确的密钥。
交易中密钥对的使用:确保您在正确的交易区域中使用适当的密钥对。例如,
payer
应该是可以支付交易的密钥对,而 wsol_kp
应该是 Wrapped Solana 代币帐户的密钥对。
三。 交易签名:当您命名
async_client.Send_transaction(swap_tx, payer, wsol_kp)
时,请确保每个payer
和wsol_kp
都包含在签名者列表中。 Solana 客户端库期望签名者列表与交易中的公钥列表类似。
如果您检查了所有这些,但错误仍然存在,那么在您命名之前打印出密钥对的通用公钥以及交易中的通用公钥可能会有所帮助
send_transaction
。这可能有助于您发现任何差异。