Table of Contents
Farming using the Spacefarmers Community Node
If you have the capabilities to run a full node by yourself, we absolutely urge you to run your own full node! A large number of properly operating full nodes is the optimum for network decentralisation. The Spacefarmers Community Node is only intended as a fall-back for those who are not able to properly run a full node by themselves.
Farming can be quite a struggle when trying to keep a full node running on a system 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.
The network structure looks like this:
other network peers --- Wallet | | | Spacefarmers Community Node | | _____ Harvester 1 | / Farmer (CA) ----------- Harvester 2 \_____ Harvester 3
The communication between the Community Node and your local Farmer is bi-directional; The Community Node feeds the farmer with its mempool (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.
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 positive impact from farmers who are unable to run a stable full node on their own and are thus would not 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!
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 stay connected to a full node without noticeable 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 of our backend nodes go down at the same time, there is enough capacity left on the other nodes to serve all connected farmers.
How to connect
In order to use our community node, you need to pool with SpaceFarmers.io and submit valid partials once in a while. You might lose your connection with the community node otherwise!
Chia 1.3.0 and up is required! Find the latest version of Chia here.
- Make sure all Chia processes are stopped by closing the GUI or running
chia stop all -din the CLI.
- In the
config.yaml, which is located in
$HOME/.chia/mainnet/config/), instruct your farmer to use the community node. Change:
farmer: full_node_peer: host: localhost port: 8444
farmer: full_node_peer: host: community-node.spacefarmers.io port: 8444
- You can now start just the farmer (without local full node). CLI:
chia start farmer-only
- If you want to run a harvester as well, don't forget to start it. CLI:
chia start harvester
- If you want to use a wallet as well, make sure your
config.yamlallows the wallet to connect to other (“unknown”) peers/nodes (as you won't have a “known” and trusted local peer/node running):
wallet: connect_to_unknown_peers: true
After that, you can start the wallet. CLI:
chia start wallet
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.