Post
Topic
Board Deutsch (German)
Re: Pool-Hopping lohnt sich
by
Müller
on 16/07/2011, 21:57:28 UTC
Hier der Code für eine Einzelrunde. Der Counter zählt die 1000 Miners ab (Ich wollte vorhin von 100 auf 1000 Miners erhöhen), macht die 1:10.000 Chance (Oh, ich ahtte vorhin 1:100.000 geschrieben, das war falsch, da fehlt ne 0 im Quelltext für) und wenn der Hash richtig ist (Zufallszahl=1) dann werden die Coins verteilt. Die Funktion wird einige Millionen mal aufgerufen und das Ergebnis ist dann eine gleichmäßig verteilung.

Code:
for p := 1 to 1000 do
  begin
  b := random(10000)+1;

  // Hash loggen
  inc(pools[miners[p].pool_id].hashes);
  inc(pools[miners[p].pool_id].round_hashes[p]);


  if b = 1 then // Chance 1:10000
    begin
    // Hash gefunden...
    hash_sum := pools[miners[p].pool_id].hashes;
    inc(pools[miners[p].pool_id].btc , 50);

    for o := 1 to 1000 do
      begin

      if pools[miners[p].pool_id].round_hashes[o] > 0 then
        begin
        // User O hat mit gesucht
        miners[o].btc := miners[o].btc + 50/hash_sum * pools[miners[p].pool_id].round_hashes[o];
        pools[miners[p].pool_id].round_hashes[o] := 0;
        end;
      end;
    pools[miners[p].pool_id].hashes := 0;

    end;
  end;


Zusätzlich werden die Miners noch regelmäßig auf die Pools verteilt mit
Code:
miners[ random(1000)+1 ].pool_id := random(10)+1;

Und zu guter letzt wird der letze Miner auf den Pool mit den wenigsten Hashes gesetzt. In meinem Beispiel die letzen zwei, ich wollt sehen, wie sich das ganze verhält wenn mehr als 1 Miner wechselt.

Code:
for p := 1 to 10 do
  begin
  if pools[p].hashes < hashes then
    begin
    hashes := pools[p].hashes;
    mh := p;
    end;
  end;
if mh > -1 then
  begin
  for o := 1000 downto 999 do
    begin
    miners[o].pool_id := mh;
    end;
  end;
end;