Post
Topic
Board Pools (Altcoins)
Re: [ANN] profit switching auto-exchanging pool - middlecoin.com
by
mueslo
on 22/08/2013, 19:01:40 UTC
For each number of sample size, I run one instance of the simulation. Each one represents 1 block of a coin.

I generate a solve time for that block. Our constant variable is the block solve time, which represents an average. I generate a random number between 1/2 of it, and 1.5x of it, this is the solve time for this particular block. Remember, by the very definition of the word average, future values will be evenly balanced across both sides.

You just don't get it, do you? This is precisely what's wrong, as we've pointed it out over and over again. If you want to use solve times, you have to use those for a Poisson process. Writing a simulation that utilises the results of this wrong distribution.

Stop spreading your factually incorrect point over and over and address the criticism.

Edit:
This would be a better example of how it works. Maybe it'll make you understand it better. Note the complete lack of independence from block find time, even in the source.

Code:
import random
import numpy as np

class worker():
    def __init__(self,hashrate):
        self.hashrate = hashrate
        self.sharesolvetime = 60. / hashrate
        self.solvechance = 1/self.sharesolvetime #solve chance per unit time
        self.shares = 0

class pool():
    def __init__(self,blockfindtime):
        self.blockfindtime = blockfindtime


worker1 = worker(1)
worker2 = worker(12)

duration = 10000 #the higher the better
timestep = 0.001 #should be as low as posible,
                 # worker1.solvechance*timestep must be as close to zero as possible
                 # to be factually accurate
    
for bft in np.logspace(0.1,3,5):
    pool1=pool(bft)
    for t in np.linspace(0,duration,duration/timestep + 1):
        rand = random.uniform(0,1)
        rand2 = random.uniform(0,1)
        if rand<(worker1.solvechance*timestep):
            worker1.shares+=1
        if rand2<(worker2.solvechance*timestep):
            worker2.shares+=1
            
        
    print "Worker 1 has: " + str((float(worker1.hashrate) / float(worker2.hashrate + worker1.hashrate)) * 100) + ' percent of the hash power'
    print "But worker 1 has: " + str((float(worker1.shares) / float(worker2.shares + worker1.shares)) * 100) + ' percent of the profit'
    print "When worker1's average share-find-speed was: " + str((float(pool1.blockfindtime) / float(worker1.sharesolvetime))) + "x Block find speed"
    print "Over sample size of " + str(duration/timestep+1) + " steps \n"