SIA Coin is the cryptocurrency that allows you to do some earnings by renting your spare hard disk space. In order to be able to rent your space, you must configure some parameters (some of them technical, some others economical). These parameters help the SIA environment to assign a score; the way the score is assigned is complex. I have spent some code reading and I have found the following:
Please note that I am not a golang coder. I may have some misreadings. What it is not really clear to me is how the estimated score is calculated (es(X) = n). SIA Coin documentation says it is a combination of prices, uptime, free space, and other things. But they haven't documented (yet) exactly the math behind that number. Again, I am not a golang coder.
When a renter looks for space, the renter will select those hosts with the highest score. So the big question, what parameters can I adjust in order to have a higher score and start doing some profits?
Well, thank god the genetic algorithms exist.
The logic behind them is not complex or sophisticated, indeed the search process is more kind of brute force. Yes, I will need big CPU if I am going to make this very often.
Genetic algorithms borrow the following concepts from biology:
A population is created by setting a set of individuals. Each individual is considered to have a unique chromosome. Like the real world, the chromosome is a complex set of variables (genes). In the Genetic Algorithms, a chromosome is represented by a set of genes. Each variable is considered to be a gene.
In the SIA Coin environment, the chromosome is formed from the following settings (genes):
So, when creating the population a call to the SIA coin API such as hostdb/active to get a list of the current active host and then a hostdb/host to get the detail.
Fitness is determined by how close each chromosome comes to providing a solution to the equation. Fitness evaluation will return a rank. Then, you can discard those who don't meet the criteria.
I will use the host/estimatescore API call to get the conversion rate.
Two chromosomes (the parents) mix to produce a child. The key here is knowing how many genes each parent will contribute. This is totally random. Like nature, sometimes a child seems to be the younger version of one of the parents (all but one gene are copied from one parent), other times the child looks alike of both parents (each parent has contributed the 50% of the genes).
Some algorithms replace the new child with the lesser fit parent.
Randomly change one or more values of the genes. Mutation is important; because of the randomness of the genetic algorithm, sometimes the searching may fall into a loop, this mechanism helps to break it.
Mutation rate should be low.
The following actions are: