Solana:如何修复无效公钥问题?

问题描述 投票:0回答:2

我需要你的帮助,因为我已经被这个问题困扰好几天了。

我正在尝试在 Solana 上进行超级简单的交换。使用 Raydium 在 devnet 上的 Sol 和 USDC 之间。

const { Connection, Keypair, PublicKey } = require('@solana/web3.js');
const { Liquidity, TokenAmount, Token, Percent } = require('@raydium-io/raydium-sdk');

const devnetConnection = new Connection('https://api.devnet.solana.com');
const privateKey = []; // secretKey
const wallet = Keypair.fromSecretKey(new Uint8Array(privateKey));

const ADDRESSFROM = 'So11111111111111111111111111111111111111112';
const ADDRESSTO = 'EP2ib6dYdEeqD8MfE2ezHCxX3kP3K2eLKkirfPm5eyMx';
const OWNER = '675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8';

async function main() {
  const poolKeys = {
    id: new PublicKey(OWNER),
  };

  const TOKENFROM = new Token(devnetConnection, new PublicKey(ADDRESSFROM), 9, wallet.publicKey);
  const TOKENTO = new Token(devnetConnection, new PublicKey(ADDRESSTO), 6, wallet.publicKey);  

  const rawAmountIn = 1;
  const amountIn = new TokenAmount(TOKENFROM, rawAmountIn * 10**TOKENFROM.decimals, false);

  const slippage = new Percent(50, 10000);
  const poolInfo = await Liquidity.fetchInfo(devnetConnection, poolKeys);
  const { minAmountOut } = Liquidity.computeAmountOut(poolInfo, amountIn, TOKENTO, slippage);

  const { transaction, signers } = await Liquidity.makeSwapTransaction({
    connection: devnetConnection,
    poolKeys,
    userKeys: {
      owner: wallet.publicKey,
    },
    amountIn,
    amountOut: minAmountOut,
    fixedSide: 'in',
  });

  const signature = await devnetConnection.sendTransaction(transaction, [wallet, ...signers]);
  console.log(`Transaction hash: ${signature}`);

  await devnetConnection.confirmTransaction(signature);
  console.log(`Transaction confirmed: ${signature}`);
}

main().catch(error => {
  console.error(error);
});

我无法解决此公钥问题并进行交易。

reason: 'invalid public key',
code: 'INVALID_ARGUMENT',
argument: 'publicKey',
javascript swap solana solana-web3js
2个回答
0
投票

开发网上的 USDC 地址与主网上不同。

您正在使用

EP2ib6dYdEeqD8MfE2ezHCxX3kP3K2eLKkirfPm5eyMx
的主网地址,但如果您在 devnet 上查看该帐户,您会发现它不存在 https://explorer.solana.com/address/EP2ib6dYdEeqD8MfE2ezHCxX3kP3K2eLKkirfPm5eyMx?cluster=开发网

这是官方 devnet USDC 地址:https://explorer.solana.com/address/4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU?cluster=devnet


0
投票

这个问题你解决了吗?或者你还有吗?

© www.soinside.com 2019 - 2024. All rights reserved.