Post
Topic
Board Anfänger und Hilfe
Re: Verständnisfrage zu Minern
by
snodo
on 24/01/2018, 14:57:50 UTC
zu b.):
B.) Wie ist denn die genaue Reihenfolge: Tx im Netzwerk > Festlegen welche Miner am Block arbeiten > Miner Rechenleistung Input zum Lösen des Rätsels > Miner hat Recht auf Blockerstellung (wie ist das, wenn man sich einen Block teilt?) > Block an Chain angefügt > Nodes validieren ?
Das musste ich auch erstmal verstehen.
Es gibt nicht DEN nächsten Block.
Es funktioniert so:
- Miner suchen sich einfach "willkürrlich" irgendwelche Transaktionen raus und erzeugen daraus einen Block
- Dazu fügen sie ihre eigene "Ich bekomm die 12,5 BTC" Transaktion hinzu
- Jetzt ist der Block an sich fertig, muss aber noch signiert werden -> Das Spiel den Nonce so lange anzupassen, bis der gültige Hashwert rauskommt
Sobald ein Miner fertig ist, veröffentlicht er diesen neuen Block.
Es kann vorkommen, dass 2 Miner quasi zeitgleich sind (mit wie gesagt unterschiedlichen aber jeder für sich gültigen Blöcken), sagen wir X und Y. Dann arbeiten manche Miner auf der Grundlage von Block X und andere auf Block Y weiter. Je nach dem, ob die Block X oder Y Gruppe nun den nächsten gültigen Block findet, bleibt X oder Y gültig, weil dahinter noch einer mehr angefügt wurde. Immer die längste Blockchain ist die Gültige. Der andere Block verwaist dann also - so entstehen die Orphaned Blocks. Jetzt wissen alle wieder, welche die gültige Blockchain ist und arbeiten wieder auf der gleichen Grundlage weiter.

1.) "Miner können sich Tx mit den höchsten Gebühren zuerst aussuchen" -> Wäre es nicht besser hier eine gewisse neutralität anzustreben?
Was ist schon besser/schlechter. Es wäre dann halt anders.
Im Bitcoin ist es eben so implementiert, damit man als User eben Einflussmöglichkeit anhand der Gebühren hat, ob man schneller oder langsamer bearbeitet wird.


2.1) Knüpft an Frage "A)" bei Snodo Coiner an: Ließe sich das auch nicht programmieren oder stelle ich mir das so einfach vor? Welcher Part kann denn wirklich nur vom Miner erbracht werden. Das überprüfen der Hashwerte der Tx und das signieren des Blocks (Hash Baum)? (Korrigiert mich wenn ich Hash-Baum und das signieren des Blockes verwechsel)
Prinzipiell braucht es nicht viel Rechenleistung. Die Aufgaben der Miner könnte theoretisch jeder lösen. Die Signatur eines Blocks könnte viel simpler ablaufen, dann bräuchte man den ganzen Difficulty Kram und alles nicht.
Aber:
Problem 1: Dann sucht keiner mehr im Mempool aufwändig nach Transaktionen, sondern packt in den Block nur die eine einzige rein "Ich bekomme 12,5 BTC" -> geht natürlich schneller, also gewinnt man immer. Es werden aber nie Transaktionen bestätigt.
Problem 2: Wäre das "Rätsel" (also Nonce so lange durchprobieren, bis der Hash-Wert passt) zu einfach (bzw. gar nicht vorhanden), gäbe es nicht hin und wieder mal einen orphaned Block, sondern dann wären das Tausende (wäre erstmal nicht soo tragisch) und nach kurzer Zeit hätte man mehrere "längste" Chains, also Paralleluniversen - das darf natürlich nie passieren. Das "Rätsel" muss also eine gewisse Komplexität haben, so dass es nach Möglichkeit nicht mehrere gleichzeitig lösen.
Problem 3: Es wäre dann reine Glückssache, wer die Belohnungs-BTC erhält - fair ist das nicht.
Hash Baum ist übrigens falsch dann gäbe es ja mehrere Verzweigungen - es ist eine Kette. (bis auf die paar orphaned Blocks eben - verrückt, dass ich das Wort gerade so oft brauche, sonst erkläre ich Leuten die Blockchain und verwende das gar nicht.. die fragen aber auch nich so genau nach.)

2.2) Oder zielt der Arbeitsnachweis eher auf die Generierung von Währung aus? Es soll also wirklich echte Arbeit hineingesteckt werden (Strom). Das hätte zum Vorteil, dass BTC eine gewisse stabilität haben wie bei Gold: Ich würde aufhören zu schürfen, wenn ich nicht mehr meine eigenen Kosten decken kann und einen für mich angemessen Gewinn bekomme. Dadurch sinkt das Angebot, die Nachfrage steigt (Preis steigt) => Ich fange wieder an zu schürfen.
Ne ne, damit hat das gar nix zu tun. Es geht einfach nur drum, dass das Netz stabil gehalten wird durch das Proof-Of-Work. Das klappt auch sehr gut und fair - bis auf den hohen Stromverbrauch.


3.1) Ich dachte ein einziger Miner gewinnt das Recht an diesem Block. Oder ist es so, dass auch zwei konkurrierende Miner an einem Block arbeiten? Konkreter gefragt: Wie wird festgelegt welcher Miner an welchem Block arbeitet? Das Teilen hört sich so demokratisch an.. das wird aber nicht abgestimmt, sondern jeder kann sich an dem Block beteiligen und Energie raushauen?
3.1a) Wie funktioniert das dann mit Mining Pools?
Siehe oben, jeder Miner baut sich seinen eigenen Block, an dem er gerade arbeitet.

3.2) Und du schreibst, dass der Schwierigkeitsgrad proportional der Gesamtrechenleistung im Netzwerk angepasst wird. Was ist aber, wenn jetzt nur 1 Miner an einem Block arbeitet? Dann kann es doch länger als 10min dauern, da das System nicht im Vorhinein weiß, wie viele Miner also wie viel Rechenleistung sich beteiligen. (Die Frage beantwortet sich evtuell aus der vorher gestellten Frage. Ich könnte mir vorstellen, dass die Difficulty sich errechnet, nachdem die Anzahl der Miner, die am Block arbeiten, feststeht.)
Es wird hier immer von der Vergangenheit auf die Zukunft geschlossen. Alle 2016 Blöcke wird die Difficulty angepasst. Wenn dann innerhalb der nächsten 2016 Blöcke plötzlich doppelt so viel Rechenpower da ist, kommt im Schnitt alle 5min ein Block, bis das nächste mal angepasst wird.
Brechen 50% der Miner weg, dauert es 20min pro Block.
Genau hier sehen Kritiker nen riesen Problem: Brechen 99% weg, dauert es plötzlich 1000 Minuten pro Block, das bis zu 2016 Blöcke lang. Also 1400 Tage bis zur nächsten Anpassung - in diesen 1400 Tagen wäre Bitcoin quasi nutzlos. 1000 Minuten (fast 17 Stunden) für ne Bestätigung und für gerade mal 4200 Transaktionen.. es wäre unbenutzbar. Daher würde in diesem Fall wohl auch das letzte 1% aussteigen -> Bitcoin wäre tot.
Ist aber alles gar nicht so dramatisch.. Selbst 50% die auf einmal wegbrechen ist schon unrealistisch, 99% ist einfach nur FUD-Mache der Kritiker Wink


4.1) Alle anderen = Nodes, also Nutzer wie du und ich? Oder alle anderen Miner?
Alle Miner sowieso, die Full-Nodes soweit ich weiß auch, hier bin ich mir nichtmal sicher.

4.2) Block ablehnen kann ich nachvollziehen aber nicht "und suchen weiter", wonach? Oder meintest du damit die eig. passive Tätigkeit der Nodes: sobald ein Block kommt, wird verifiziert (Hash überprüft?)
Ich meine hiermit nur die Miner.
Sagen wir Block 52000 kam rein, die Miner selbst haben auch gerade an 52000 gearbeitet. Dann schauen sie kurz, ob dieser soeben veröffentlichte 52000 gültig ist => dann würden sie sich nen neuen Block (52001) zusammenbauen müssen um daran zu minen. War der veröffentlichte 52000 aber falsch, können sie ja einfach mit der eigenen Arbeit, den 52000 fertig zu minen, weitermachen.

4.3) "Sind sich alle einig". Wirklich alle, also das gesamte Netzwerk? Oder ab einer bestimmten Anzahl von Bestätigungen?
Auch hier meinte ich nur die Miner und nur einig darüber, dass die 52000 korrekt ist.
Jeder Miner veröffentlich die aktuelle Version "seiner" Blockchain - dort steht eben drin "letzter Block 51999" oder "letzter Block 52000" - darüber wird signalisiert, ob sie den Block aufgenommen haben oder nicht. Hier fehlt mir aber selbst das Detailwissen - bin ja kein Miner Wink


5.1) Anname: Ein Miner erzeugt durch eine Berechnung einen Block > Für die Berechnung setzt er Rechenleistung also Strom & Hardware ein > Miner erhält BTC   (Also Quasi Strom für BTC, oder nicht?)
Quasi ja, in Wahrheit ist der BTC aber nur eine Nebenprodukt. Was er tatsächlich geleistet hat, war die Blockchain um einen Block zu erweitern. Das ist das wichtige. Das interessiert alle. Ob er dafür was bekommt oder nicht ist mir als Nutzer doch egal Wink Er hat mit seiner Arbeit gerade mehrere Tausend Transaktionen bestätigt und somit diese ganzen Nutzer glücklich gemacht.

5.1a) Ok, ich habe weitergelesen. Das klingt verständlich. Kritik, weil selbst bei niedrigem Schwierigkeitsgrad, für den man eig. wenig Strom gebraucht hätte, letzten endes viel Strom aufgrund des wettbietens bzw. Gier der Miner verwendet wird.
Und das alles nur weil der BTC Preis so hoch ist - so hat der Erfinder sicher nicht vorgestellt, aber ist aktuell nunmal so.

5.1b) Gibt es auch Fälle, indenen der Schwierigkeitsgrad so hoch ist, dass unabhängig von Wettbieten, die Verschwendung sehr hoch ist? Oder ist die Kritik einzig auf das Verhalten der Miner zurückzuführen?
Den Minern kann man nichtmal einen Vorwurf machen - für die ist das ein reines Business Modell. Die wollen ja nicht die Welt verbessern, sondern Geld verdienen.
Es ist eben das Design des Proof-Of-Work System an dem es hier krankt. Das lässt sich aber nicht mal eben einfach so ändern und ist nun in dieser Form da.
Im Laufe der Zeit werden die Belohnungen regelmäßig halbiert. Auch hier bin ich gar nicht so tief drin, dass ich wüsste wann genau - lässt sich rausfinden.. jedenfalls sinds dann "bald" 6,25 -> 3,125 -> 1,5625 -> ... der Stromverbrauch wird also nach und nach runter gehen, weil sich das Business Model eben sonst nicht mehr rechnet. (Wobei dem gegenüber ein ständig steigender Preis steht - mal sehen wo sich das alles einpendelt)


Noch eine neue Frage: 6.) Man hört oft davon, dass die Miner gegen das Bitcoin devTeam kämpfen. Wie ist das zu verstehen?
Miner "verkaufen" Platz in der Blockchain. Aktuell ist dieser auf 1 MB limitiert, das gefällt denen natürlich super.
Bitcoin Cash beispiesweise hat ja einfach mal auf 2 MB angehoben. Da sind die Blöcke nie voll, die Gebühren also viel niedriger, also verdienen die Miner weniger.
Sowas ist da gemeint.. wenn die Entwickler coole neue Ideen haben, um alles schneller und günstiger hinzubekommen, dann haben die Miner da gar kein Interesse dran.. die verdienen an den hohen Gebühren ja mit Wink (zu den 12,5 BTC die fix sind, kommt aktuell so ca. 1 BTC an Gebühren oben drauf)

Zu den alternativen Ansätzen: Meinst du hier z.B. IOTA?
Ich meinte in erster Linie Proof-Of-Stake.
IOTA nutzt ja nichtmal mehr ne Blockchain, sondern einen Tangle. Das sind ebenfalls Blöcke, aber nicht mehr seriell hintereinander gehängt, sondern "wirr" miteinander verknüpft. Ist jetzt zu sehr Off-Topic und ich hör mal auf zu schreiben, sonst wird das nochmal so lang wie die "paar" Antworten da oben.
Auch zum Tangle gibts schon wieder Alternativen wie z.B. Hash-Graph. Aber gehört alles nicht hier her Wink