【问题标题】:How do I force Solana/Anchor methods to use the devnet?如何强制 Solana/Anchor 方法使用 devnet?
【发布时间】:2023-02-03 00:02:44
【问题描述】:

在创建一个简单的程序时,我无法让 Solana 使用 devnet 进行 RPC 连接。我不断收到以下错误:

{
  blockhash: '7TTVjRKApwAqP1SA7vZ2tQHuh6QbnToSmVUA9kc7amEY',
  lastValidBlockHeight: 129662699
}
Error: failed to get recent blockhash: FetchError: request to http://localhost:8899/ failed, reason: connect ECONNREFUSED 127.0.0.1:8899
    at Connection.getRecentBlockhash (/home/simeon/dev/freelance/niels_vacancies/node_modules/@solana/web3.js/lib/index.cjs.js:6584:13)

即使我已经设置了所有可设置的常量,如 ANCHOR_PROVIDER_URL=https://api.devnet.solana.com,或我的 Anchor.toml 文件中的相关条目。我还明确指定以下内容:

const connection = new anchor.web3.Connection("https://api.devnet.solana.com/", {commitment: "max"});
const wallet = anchor.Wallet.local();

const provider = new anchor.Provider(
    connection,
    wallet,
    {
        commitment: "max",
        preflightCommitment: "max",
        skipPreflight: false
    }
)

我什至测试了console.log(await anchor.getProvider().connection.getLatestBlockhash());,以确保我实际上可以从 devnet 获取区块哈希。我可以做些什么来强制 RPC 调用也这样做?

【问题讨论】:

  • 您的 solana cli 配置(solana config get)是什么?您可以更改它:solana config set --url devnet

标签: solana anchor-solana


【解决方案1】:

您只需将 Anchor.toml 集群设置为 devnet 和 programs.devnet,然后使用带有 devnet-sol 的钱包部署程序。我将为 devnet 添加 Anchor.toml

[features]
seeds = false
[programs.devnet]
first_program = "FPT...bd3"

[registry]
url = "https://anchor.projectserum.com"

[provider]
cluster = "devnet"
wallet = "PATH/TO/WALLET/WHO/WILL/PAY/FOR/DEPLOY.json"

[scripts]
test = "yarn run ts-mocha -p ./tsconfig.json -t 1000000 tests/**/*.ts"

在这种情况下,first_program 是在 declare_id 宏上声明的 program_id

然后你可以使用你的测试文件完全正常anchor.setProvider(anchor.Provider.env());

【讨论】:

【解决方案2】:

如果您已经更新 anchor.toml 以使用 devnet,并且在使用 program.provider.connection.whateverprogram.account.whatever.fetch.whatever 时遇到此问题,请确保在创建程序之前设置了锚点提供程序,例如:

  const provider = AnchorProvider.env();
  anchor.setProvider(provider);

必须在线之前 const program: Program<Whatever> = workspace.Whatever;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-16
    • 2023-01-15
    • 2022-08-13
    • 2021-10-15
    • 1970-01-01
    • 2022-01-05
    • 2021-10-29
    • 1970-01-01
    相关资源
    最近更新 更多