'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 deployanchor 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 |