This question already has an answer here:
Here we read:
In the Bitcoin network, only blocks with certain hashes get accepted and included in the official list. The criteria for which blocks "count" is that their hash has to be below a certain number called the target. The network adjusts this number up and down according to how frequently blocks are passing the test--this is how it's able to keep the rate of block production at an average of 10 minutes per block.
This calculation is expanded on here:
The Bitcoin difficulty started at 1 (and can never go below that). Then for every 2016 blocks that are found, the timestamps of the blocks are compared to find out how much time it took to find 2016 blocks, call it T. We want 2016 blocks to take 2 weeks, so if T is different, we multiply the difficulty by (2 weeks / T) - this way, if the hashrate continues the way it was, it will now take 2 weeks to find 2016 blocks.
For example, if it took only 10 days it means difficulty is too low and thus will be increased by 40%
But who does this? Is it a collective property of the cluster? Is it the server? What gives the server the authority to determine this?
My question is: What is the mechanism by which the 'system' adjusts the difficulty of finding blocks so one is found on average every 10 minutes?
EDIT: I don't believe the question ("How is the difficulty of bitcoin mining propagated?") is a duplicate - because it doesn't explain the implementation issue - which is the essence of my question.