'I can not deploy the program to dev net with anchor

I get this error where I run anchor deploy:

Deploying workspace: http://127.0.0.1:8899
Upgrade authority: /home/<user>/.config/solana/id.json
Deploying program "faucet"...
Program path: /home/<user>/Workspace/<project_path>/target/deploy/xxx.so...
Error: RPC request error: cluster version query failed: error sending request for url (http://127.0.0.1:8899/): error trying to connect: tcp connect error: Connection refused (os error 111)
There was a problem deploying: Output { status: ExitStatus(ExitStatus(256)), stdout: "", stderr: "" }.

Before deploying, I have already run the following to change the cluster config in local:

solana config set --url https://api.devnet.solana.com

How can I solve the problem?



Solution 1:[1]

Your error clearly states that while you are trying to deploy to your local network, it is not up and running. So, what you have to do is simply open a new terminal window and run:

solana-keygen new

save the seed phrase and other relevant details somewhere secure and then, run

solana-test-validator

Now in a separate terminal window where you had earlier tried to deploy, type

anchor deploy 

again and it should be successfully deployed.

Else, if you were trying to deploy on any other network, for example, devnet. Then you would want to airdrop some SOL into the account generated after running solana-keygen new using the command:

solana airdrop 1 <RECIPIENT_ACCOUNT_ADDRESS> --url https://api.devnet.solana.com

Then use additional flags in your deploy command as follows:

anchor deploy --provider.cluster devnet

Solution 2:[2]

Your error suggests that you are actually trying to deploy to local but your local is down. When deploying to clusters other than local, you need to add

anchor deploy --provider.cluster devnet

you can get more help from

anchor --help

Solution 3:[3]

Today I got the same error while trying to deploy to devnet, turns out this is simply because the devnet is down.

If you have been trying to deploy with no luck, you can check if the network is up and running: https://status.solana.com/

You can see for example that Solana's devnet is suffering from a major outage on the day of writing this answer, keep that possibility in mind even though it is a rarity.

Solution 4:[4]

  • solana config set --url devnet

      Config File: /home/.config/solana/cli/config.yml
      RPC URL: https://api.devnet.solana.com
      WebSocket URL: wss://api.devnet.solana.com/ (computed)
      Keypair Path: /home/.config/solana/id.json
      Commitment: confirmed
    
  • solana config get

  • this is how anchor will know where to deploy solana program to. we need to air drop

    solana airdrop 2 --url devnet

    solana balance --url devnet

  • open anchor.toml file. update the file

    // [programs.localnet] change to devnet
    [programs.devnet]
    
    // cluster = "localnet" change to devnet
    cluster = "devnet"
    
  • anchor build

this creates a new build with new programId. access this program id

  • solana address -k target/deploy/yourprojectname-keypair.json

this will give you the programId of deployed contract

  • Now in lib.rs and anchor.toml update the declareId with this code.

lib.rs

 declare_id!("paste the programId of deployed contract"); 

anchor.toml

  yourProjectName = "paste the programId of deployed contract"
  • now run anchor build again now we are ready to deploy

  • anchor deploy

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Rahul Saxena
Solution 2 yangli-io
Solution 3 Hadi Saleh
Solution 4 Yilmaz