Korrekt, der Miner oder Pool welcher einen Block gefunden hat der aktuellen Schwierigkeit (difficultiy) entspricht verteilt diesen genauso im Netzwerk wie alle anderen die Transaktionen. Die anderen Nodes im Netzwerk prüfen dann ob der Block korrekt ist. Unter anderem wird geprüft ob die benutzten Eingänge auch hätten benutzt werden dürfen ob die difficulty stimmt etc.
Vielen Dank fürs Antworten, - bin mir nur nicht sicher, ob Du mich richtig verstanden hast... - oder ob ich die Antwort verstehe - es geht nicht um den schon gelösten Block (der von den anderen via Hash-Check überprüft wird), sondern um den danach...
Also:
1 Unbestätigte Transaktionen werden via Nodes im Netzwerk verteilt
2 Ein Rechner im Mining Netzwerk löst die Aufgabe und sendet Lösung an andere Rechner
3 Andere Rechner bestätigen Lösung (Frage was passiert wenn ein oder mehrere PC´s widersprechen ?)
Die Worte "Aufgabe" und "Lösung" sprechen für mich dafür das Dir nicht ganz klar ist was beim Minen eigentlich passiert. Vielleicht ist es Dir auch klar. Ich mach das jetzt trotzdem nochmal um sicher zu gehen. Weiter unten war da nämlich was unklar.
"Die" Lösung für einen Block gibt es nicht. Es gibt unglaublich viele Lösungen und alle sind gleich richtig. Die Difficulty sagt nur aus das der Hash kleiner als ein bestimmter Wert sein muss. Also zum Beispiel muss der Hash 3 führende Nullen haben. Das können also auch 4, 5, 17 oder 23 führende Nullen sein. Diesen Hash zu finden ist keine Rechenaufgabe im eigentlichen Sinn, zumindest ist der Ablauf nicht deterministisch. Du kannst Dich nicht hinsetzen und von x nach y rechnen um einen Hash mit z führenden Nullen zu bekommen. Du musst probieren. Das ganze ist also eher eine Lotterie. Weil Computer aber so feine Rechner sind wird das Minen gerne als "Lösen einer komplexen mathematischen Aufgabe" dargestellt. Das ist leider grober Unfug. Sha256 ist keine komplexe Aufgabe. Das kann theoretisch jeder Oberstufenschüler mit nem Taschenrechner. Es ist nur unglaublich nervig das per Hand zu machen
http://en.wikipedia.org/wiki/SHA-2#Pseudocode
Erst wird der Block gebildet, dann der Hash davon gebildet. Wenn der Hash passt gilt der Block als "gelöst" (siehe Ausführungen oben). Man kann da nicht hinterher noch was reinschieben, das würde den Hash drastisch ändern und vermutlich ist der dann nicht mehr korrekt. Das macht eine gute Hashfunktion aus. Wenn sich 1 bit vom Input ändert, sieht der Hash komplett anders aus.
Bsp.:
sha256(I WANT TO BELIEVE)= 6a3e8cd0ccbd6a879bc385fedf44493e3041c26f8cff59aff8d7ba29a36cf674
sha256(I WANT TO BELIEVF)= 8433098ee2446d9579c0ec369ba9e1b8e958779f2e9db88cb0c8249fc601a830
Die Belohnung gibt es auch nicht sofort. Es dauert 120 Blöcke (~ 20 Std.) bis "neue" coins ausgegeben werden können.
Richtig, es kann beliebig viele korrekte Blöcke geben. Nimm eine der Transaktionen raus und finde trotzdem einen gültigen Hash, dann ist der Block auch in Ordnung, auch "korrekt", wird auch vom Netzwerk akzeptiert.
Falls nicht? Wieso sollte der nicht akzeptiert werden?
Entweder ist der Hash nicht korrekt, dann darf der Block nach Protokoll nicht akzeptiert werden. Sonst könnte ich einfach auf meinem Telefon Blöcke basteln und keiner könnte mich dran hindern.
Oder alternativ hat jemand einen manipulierten Client der die Blöcke nicht akzeptiert. Das hat aber nur Auswirkung auf diesen Client (und ggf. andere die keine Verbindung zu anderen Clients haben). Das ist also ein bisschen komischer Angriff, weil man sich damit aus dem Netz zieht. Da klingt nach einem "bockiges Gör"-Angriff. Ich stell mich in die Ecke und sag ihr seid alle doof ich mach nicht mehr mit. Alle anderen gucken kurz, sagen ok und machen weiter. No harm done
51% der Rechnenpower bedeutet das die meisten Blöcke von Dir (CERN, NSA, etc.) kommen. Du hast also maßgeblichen Einfluss auf das Netzwerk und welche Blöcke in der Blockchain sind. Wie AwSuits schon geschrieben hat erlaubt das einige Angriffe. DoubleSpend (eigene Coins "nochmal" ausgeben) ist dabei der Angriff vor dem die meisten Angst haben. Da dies aber vermutlich den Preis negativ beeinflussen würde, gehen viele davon aus das ein solcher 51% Angriff dem Angreifer am meisten schadet. Ich hab keine Zahlen im Kopf wieviel 124 PH/s (aktuelle Rechenleistung des Netzwerks - um 50% zu erreichen muss der Angreifer mindestens soviel haben wie alle anderen zur Zeit) kosten würden. Die allgemeine Annahme zur Zeit ist: da ist kein Geld mit zu gewinnen; es lohnt sich mehr nicht zu manipulieren und 50% aller coins einzusammeln.
5 PC´s in einem CoinNetzwerk Minen - 4 Pc´s sind alte 4x86er mit 40 Mhz und einer ist ein 4Ghz 8 Kerner...
Wenn jetzt der 8 Kerner sagt die Lösung lautet XX und die anderen 4 sagen, ne Stimmt nicht, es ist XY - dann haben diese 4 Nichts zu sagen, weil der 8 Kerner mehr als 50% der Rechenpower hat... ?
Genau genommen würde das zu einem "Fork" führen. Die 4 alten Klapperkisten machen Ihr eigenes Netzwerk auf das auch Bitcoin heißt aber sonst nicht viel mit dem modernen Rechner zu tun hat. Es gibt dann sozusagen 2x Bitcoin. Da ist dann die Frage welches sich durchsetzen wird. Das gab es in der Vergangenheit https://bitcoin.org/en/alert/2013-03-11-chain-fork
und wird es vermutlich auch nochmal geben.
Wenn nicht alle nach den selben Regeln spielen teilt sich das Netzwerk auf.
Lt. Top500 http://en.wikipedia.org/wiki/TOP500 ist der Leistungsfähigste Rechner zur Zeit der chinesische Tianhe-2 http://en.wikipedia.org/wiki/Tianhe-2 mit 33 PFLOPS. Das klingt jetzt erstmal viel, aber die benutzen auch nur CPUs. Es gibt hier
https://bitcointalksearch.org/topic/m.624247
einen alten Thread wo da mal drauf eingangen wurde. Im Endeffekt ist es nicht zu vergleichen. Aber wenn wir die GPU dort mal nehmen. Haben wir 700MH/s bei 2700 GFLOPS. Unsere ~34 Millionen GFLOPS vom Tianhe-2 sind also magere 8,5 TH/s.
ASICs sind halt Spezialhardware.
Ist das so gewollt ? - Wo liegt der Vorteil ? - Wenn ich die Liste unbestätigter Transaktionen im Netzwerk schon habe, könnten doch auch alle Rechner sich den Block selber generieren, und dann nur überprüfen, ob Sie dieselbe Aufgabe Rechnen (diese Prüfung wäre nur um Übertragungsfehler auszuschliessen)
Warum - soll denn ein einziger Rechner Vorschreiben wie der neue Block aussieht - wenn die Daten dafür "Offen" im Netzwerk sind ?
Ja das ist gewollt. Die Schwierigkeit einen neuen Block zu finden sorgt dafür das es auch schwierig ist alte Blöcke zu verändern.
R5D4
P.S. Mir fällt es einfach schwer in der Welt des Nicht-Quanten Computers - indem alles entweder Null oder Eins ist - in Begriffen wie "Vorschlägen" und "Konsens" zu denken - ein: [IF (Sonne Scheint) & (Wetter warm) = Warm und Sonnig] THEN GO TO (Badesee) IF NOT GO TO (Monitor) ist da viel klarer....
Aber es ist doch genau so binär
IF [(HASH VALUE < TARGET(DIFFICULTY)) & (TXs IN BLOCK ARE VALID)] THEN (BLOCKCHAIN = BLOCKCHAIN + BLOCK)
ELSE [keep working on current block]
also solange keiner anfängt den Client zu manipulieren. Aber dann hat man halt Litecoin, Dogecoin, TittiCoin oder MyPersonalCoin und nicht mehr Bitcoin.