What's the difference between harvesting and farming?

I’m a bit confused with the noun and verb use of farmer/farming and harvester/harvesting.

According to the Chia consensus doc, the farmer is not the same as the harvester. Which I can see because there are different daemons for these two things. BUT, I have seen farming and harvesting used interchangeably and that has confused me.

Farmers are nodes which participate in the consensus algorithm by storing plots and checking them for proofs of space. They communicate with a Full Node (usually on the same machine.)

Farmers are a node.

Farmers also communicate with one or more Harvesters which is a service that resides on the machine where plots are stored and looks up proofs of space on behalf of the Farmer process.

Harvesters are a service. Farmers use the harvester service.

  • Farming vs harvesting: as far as I can tell, these are the same thing for all intents and porpoises :dolphin: :laughing:

  • But the actual daemons farmer and harvester are different.

Is this correct?

Also: If I’m running the farmer daemon, does this mean the harvester is running too?

3 Likes

maybe you can check that section. it may answer your question.

There’s no reference to “harvesting” there. I looked.

How dare you pull a me. I’m the guy that tells people to look at the Wiki, not you! lol

I did go over it again and this part is useful:

The new_signage_point message states the farmer sent a challenge to your harvester. The new_proof_of_space message states the harvester found a proof for the challenge. You will get more new_signage_point messages than new_proof_of_space messages.

Bolding mine.

Farmers send the challenges to the harvester. The harvester then tries to find the proof.

2 Likes

From the bottom up, and in broad strokes:

A Harvester’s job is to check for winning plots. It receives a challenge from a Farmer, checks its plots, and reports results back to the Farmer.

The farmer communicates with the network at large (by talking to a Node). It receives a challenge from the network, sends it to any harvesters that are connected, and handles the results. If one of the harvesters has a winning plot, the farmer does some more stuff, and I’m not entirely clear on the details.

To extend the agricultural analogy: Harvesters are farm workers who toil in the fields (plots). The Farmer is the boss-lady who coordinates their work, and takes the harvest to local market (the full node). The Node is like the local market guy who buys up the local produce from local farmer(s), and sells it on the global market (the network).

This farmer/harvester architecture is nice because:

  1. You can distribute the harvesting work close to the disks (by running the lightweight harvester on the machine the disk is connected to).
  2. It’s generally more secure, since your private key material only needs to be available to the farmer, and is thus easier to securely manage.

That’s my novice’s understanding, at least.

17 Likes

The analogy is friggin’ perfect. Thank you! :grinning_face_with_smiling_eyes:

2 Likes

Yet another incredibly excellent concise summary!

5 Likes

So, when I start the Windows GUI, it has a tab called “Farm”, which shows all my plots. Do I have to do something to actually “harvest” or does the GUI do both?
Also, just wondering, but I have several machines, each with the GUI running. They are all looking at the same NAS storage for the completed plots, and all the GUI’s say they are “farming” the same plots. Is that OK or is that some sort of duplication?

The GUI runs everything. It’s the full node, wallet, harvester, and plotter. You don’t want to have multiple full nodes on your network. It’s not advised. You can have multiple harvesters and then a single main node. Have you read the Chia Github wiki?

You’re most likely going to encounter problems with your setup. I highly suggest you learn how to use the CLI.

Ive been trying to get the CLI to work under Linux, having some success but it’s not working like the instructions say it should. For now, I have 3 windows machines, so I have to run the GUI on each of them. Is there a way to get the GUI not be a full node?

Yes, I did perform the install steps on the INSTALL guide and then tried the Getting Started guide, but ran into issues which didn’t match the instructions, so I had to kludge some workarounds.

What command did you try in Linux that didn’t work?

1 Like

I think I gained a slightly more advanced understanding.. The pastoral idyll is not what it seems! Timelord, a powerful warlock is hovering over the ritual circle of full nodes. There’s a farmer and a walletless farmer. An Electron GUI is the farmer’s dog. There’s a pool in which the dog and the farmer can take a bath! You should not ask too many questions about the pool though. Let’s pretend that all of this makes perfect sense and not complain about it or anything else!

what problems could I run into? I use 4 of these machines in my network

Does anyone know how I can verify if just networking my drives to my masternode vs running farmer on each PC is better?

I got it working, thanks

I am not sure if its right… I set up my Main computer with the GUI and as a Node, as well added all directories from my local network to it.Looks like the main computer is Node, Farmer and Harvester… Now I set the other computers as harvesters, following the tutorial. But when I configure each harvester, do I have to put all the directories of the network (chia plot add - d XXX) in each harvester?? So I did it, and each harvester access 200 plots that I have in total. This step is not in the tutorial - but if I dont put any plot I guess it wont work. Am I right??
Also - my debug log seens strange - Windows sometimes put 2 \ in front of the network drives - and it doesnt find the plots…

2021-06-17T16:26:35.088 harvester chia.plotting.plot_tools: INFO Searching directories [’\\ATLAS1\d\CHIA’, ‘\\ATLAS1\f\CHIA’, ‘\\ATLAS1\g\CHIA’, ‘\\ATLAS2\d2tb\CHIA’, ‘\\ATLAS2\e2tb\CHIA’, ‘\\ATLAS2\FHD2Tb\CHIA1.1.7’, ‘\\ATLAS3\e\CHIA’, ‘\\ATLAS3\fhd2tb\CHIA’, ‘\\ATLAS3\fhd2tb\CHIA1.1.7’, ‘\\ATLAS3\x\CHIA’, ‘\\ATLAS4\D2tb\CHIA’, ‘\\ATLAS4\E1tb\CHIA’, ‘\\ATLAS5\D1tb\CHIA’, ‘\\ATLAS5\E1tb\CHIA’, ‘\\ATLAS5\F1tb\CHIA’, ‘\\Atlas6\e\CHIA’, ‘\\Atlas6\f\CHIA’, ‘\\Atlas6\G1Tb\CHIA1.1.7’, ‘\\Atlas6\HSSDZeza\CHIA’, ‘\\Atlas6\Iomega\CHIA’]
2021-06-17T16:26:36.463 harvester chia.plotting.plot_tools: INFO Loaded a total of 203 plots of size 20.09433923166671 TiB, in 1.4062676429748535 seconds

The advice I have seen is to have your storage maxed out on as few systems as possible. Adding network drive lag and system overhead can slow things down when harvesting/farming. Having multiple full nodes can be issues as well. Having just the 1 farmer with the harvesters + your plotting system (that can be offline) seems to be the consensus. That is why 4U servers and SAS expansion boxes are becoming popular for Chia… To keep 1 system with all the storage and farming/harvesting duties and another (could be multiple) more beefy system(s) for plotting.

1 Like