This is an old revision of the document!
Table of Contents
Farming using the Spacefarmer Community Node
Farming can be quite a struggle when running a full node with low specs. Chia allows many architectures, which makes it possible to (trustlessly) connect your farmer to a remote node. In this guide we will tell you why and how you would set this up.
Network Topology
The network structure looks like this:
_____ Harvester 1 (certificate A) / other network peers --- Spacefarmers Community Node --- Farmer (CA) ------ Harvester 2 (certificate B) | \_____ | Harvester 3 (certificate C) | |________________________________________________ Wallet
The communication between the Community Node and your local Farmer is bi-directional; The Community Node feeds the farmer with it's mempool logic (we use the default mempool logic), and the Farmer asks the Community Node to propagate blocks to the rest of the network. As we allow only Spacefarmers to connect to the community node currently, incentives are aligned to also actually propagate the blocks to the network: it is in the interest of the community node to propagate blocks to maintain pool profitability.
Decentralisation
The Spacefarmers Community Node does NOT sign your blocks, YOU do. As can be read in this criticism by Chia's Gene Hoffmann, any other way would not be to your advantage.
As for the overall effects on the network: obviously, 10 farmers sharing our community node instead of running 10 full nodes on their own reduces the total number of full nodes and thus has a negative impact on decentralisation.
On the flip side, there is potentially positive impact from farmers who are unable to run a stable full node on their own and are thus able to farm at all. Their additional netspace from farming via the community node increases decentralisation. Similarly, farmers only able to farm intermittently (like a hypothetical farmer for whom it only makes sense to farm on PV-generated electricity) can resume farming more quickly after a downtime because of not having to sync up their own full node.
In any case, we absolutely urge anyone who is able to run a full node for themselves to keep doing this, as ultimately this is best for maximum decentralisation of the network!
Node Uptime
To ensure the highest possible uptime for the Community Node, we use a multi-node set-up behind a load balancer. This way, when we upgrade one of the nodes, you can rest assured that you will maintain a connection with a full node without disruption.
By default, the Chia farmer process reconnects immediately after losing connection to the full node; so even if you are currently load-balanced to a node that restarts or goes down for maintenance, your farmer will reconnect to the load balancer immediately and then be assigned another full node.
We currently operate with at least N-2 redundancy: that means that even if two backend nodes go down at the same time, there is enough capacity left on the other nodes to server all connected farmers.
How to connect
- Chia 1.3.0 and up is required! Find the latest version of Chia here.
- Make sure you stop all Chia processes by closing the GUI or
chia stop all
in the CLI. - In the
config.yaml
, which is located inC:\Users\<yourusername\.chia\mainnet\config
(or$HOME/.chia/mainnet/config/
), you will have to changefarmer: full_node_peer: host: localhost port: 8444
to
farmer: full_node_peer: host: community-node.spacefarmers.io port: 8444
- Make sure you have
connect_to_unknown_peers: false
. If you don't have this entry in your config.yaml, you can add the line anywhere underfull_node:
- If you use this node as a fail-safe node to your main node, make sure to copy + paste the pool info: from the config.yaml, as well as add your keys and plots.
- In CLI
chia start farmer-only
chia start harvester
Are my keys safe?
Yes! We don't ever see your secret keys. All necessary signing is still done by your farmer process.
Let us repeat this, because it's important: your keys are used to sign the blocks locally on your farmer. The Community Node is just used to send signage points to your farmer and eventually propagate your blocks to the network. Also note that all of this is using a completely unmodified node from Chia Network's codebase only using facilities already present in the code.
Regarding your wallet: as per Chia 1.3+, you can run your wallet without a full node. This way, your wallet doesn't rely on your own full node to sync, but instead uses the whole network. Your wallet won't use and won't trust our community node. Instead, wallets will switch to 'trustless mode' and do a P2P sync from the network for the wallet data.
If you have any suggestions or critiques, please reach out to us in our discord, so that we can continue to improve this.