Bitcoin Forum
July 02, 2024, 09:54:44 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Block / Share  (Read 639 times)
GENiALi (OP)
Sr. Member
****
Offline Offline

Activity: 272
Merit: 250


View Profile WWW
January 23, 2014, 08:52:54 PM
 #1

Hallo

Ich bin noch neu und habe ein kleineres Verständnisproblem.
Ich habe mir jetzt mal ein paar Miner im Sourcecode angeschaut. Aktuell studiere ich den http://github.com/lithander/Minimal-Bitcoin-Miner und einen Java Miner.
Die übermitteln aber nur ein Resultat an den Pool zurück, wenn sie 4 Bytes die mit 0 belegt sind, finden.
Dann gibt es ja noch etwas von wegen "Share". Und jetzt weiss ich nicht wirklich was was ist.
Wird ein Share nicht an den Pool zurückgemeldet? Ich habe mit etwa 800Kh/s 8 Blöcke zusammen. Keine Ahung was das heisst. Ich weiss nur das ich in zwischen etwa 8 Hashes die mit 00000000 beginnen gefunden habe.
Aber eine "Share" Prüfung habe ich im Code bei beiden nicht gefunden, jedenfalls sind die mir nicht aufgefallen.

Also. Was ist wenn man einen Hash findet der mit 00000000 beginnt? Ein Block? Der wird ja immer gemeldet.
Und was ist dann ein Share? Der Hash wird dabei in einen Integer, wenn ichs richtig verstanden habe, konvertiert und auf kleiner als die Difficulty geprüft? Oder kleiner gleich? Würde man diesen Hash dann genau gleich melden wie ein Block?

OK. Ich weiss das 800Kh/s nicht viel sind, genauer extrem wenig. :-) Es geht mal nur ums verständnis.

Gruss
Roland Schumacher
Bitrated user: GENiALi.
lassdas
Legendary
*
Offline Offline

Activity: 3670
Merit: 1486


View Profile
January 23, 2014, 09:09:19 PM
 #2

Würde man diesen Hash dann genau gleich melden wie ein Block?
Kurz: Ja

Man findet immer nur einen Hash und nie einen Block.
Der gefundenen hash kann (u.U.) dazu verwendet werden, einen Block zu erstellen, aber Blöcke werden grundsätzlich nicht gefunden.

Ein Share ist lediglich ein Hash, der einer geringeren Difficulty entspricht, als der momentan im Netzwerk tatäschlich verwendeten.
Sowas wird von Pools verwendet, um den Anteil der Rechenleistung eines einzelnen Miners zu berechnen, damit eben auch Leute ihren Anteil erhalten, die keinen "Block" finden.

Bsp:
Die Aktuelle Netzwerk-Difficulty beträgt 1000.
Damit auch langsamere Miner in einem Pool ihren Anteil abbekommen, verteilt der Pool Arbeit an die Worker, die mindestens (!) einer Difficulty von 1 entspricht.
Jeder dieser Difficulty1-Hashes, der von den Workern an den Pool gesendet wird, wird als Share bezeichnet.

Durchschnittlich braucht der Pool dann 1000 solcher Shares, um darunter einen zu finden, der nichtnur Difficulty1 entspricht., sondern auch für die 1000 gut und somit zum erzeugen eine Blockes brauchbar ist.

Der Reward des erzeugten Blockes kann so auf die ~1000 Shares aller Worker aufgeteilt werden und jeder bekommt sein Stückchen ab.

GENiALi (OP)
Sr. Member
****
Offline Offline

Activity: 272
Merit: 250


View Profile WWW
January 24, 2014, 06:28:17 AM
 #3

Hallo

Danke für die Antwort. Es hat aber noch nicht ganz klick gemacht.
Das ich keine Blöcke finde das hab ich verstanden. Wer findet die dann? Der Poolbetreiber?

Ein Hash der mit 00000000 anfängt, also vier 0 Bytes, dass ist ein ganz normaler Hash den ich melde. Korrekt?

Ein Share ist, wenn die errechnete Difficulty kleiner ist als di die mir vorgegeben ist. Auch die müsste ich melden. Korrekt?

Gruss
Roland Schumacher
Bitrated user: GENiALi.
lassdas
Legendary
*
Offline Offline

Activity: 3670
Merit: 1486


View Profile
January 24, 2014, 03:00:16 PM
 #4

Das ich keine Blöcke finde das hab ich verstanden. Wer findet die dann? Der Poolbetreiber?
Wie gesagt, ein Block wird garnicht gefunden, sondern erzeugt.

Ein Worker im Pool findet einen Hash, sendet den an den Pool
und wenn er gut genug für die aktuelle Difficulty ist (mit genügend 0000en beginnt), erzeugt der Pool-Betreiber damit einen Block.

Ein Hash der mit 00000000 anfängt, also vier 0 Bytes, dass ist ein ganz normaler Hash den ich melde. Korrekt?
Ob Du ihn meldest, oder nicht, hängt davon ab, mit wieviel Nullen er beginnt und wie hoch die Pool-Difficulty ist,
je höher die Difficulty, desto mehr Nullen brauchts, damit der Hash "was wert" ist.


Ein Share ist, wenn die errechnete Difficulty kleiner ist als di die mir vorgegeben ist. Auch die müsste ich melden. Korrekt?
Ein Share ist ein Hash, der der aktuellen Pool-Difficulty entspricht.
Verteilt der Pool Arbeit mit Difficulty 1, meldest Du jeden Difficulty-1-Hash, den Du findest.

Da sich unter den Hashes, die Du findest, auch welche befinden, die nichtnur Diff-1 entsprechen, sondern vielleicht sogar einer mit Diff-2193847870, findet sich irgendwann auch einer, mit dem der Pool-Betreiber dann auch tatsächlich einen Block erzeugen kann.
GENiALi (OP)
Sr. Member
****
Offline Offline

Activity: 272
Merit: 250


View Profile WWW
January 24, 2014, 04:05:58 PM
 #5

Danke. Jetzt hats klick gemacht.
Die Miner die ich bislang anschaute melden alle Hashes sobald 4 null-Bytes gefunden werden.

Gruss
Roland Schumacher
Bitrated user: GENiALi.
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!