Jump to content

Hilfe für Vortrag über Bitcoin benötigt


Recommended Posts

Hallo liebe Leute! 

Ich werde im Oktober eine Fortbildungsveranstaltung zur Technik des Bitcoin Systems halten und wäre euch sehr, sehr dankbar, wenn ihr mir bei vier Fragen helfen könntet:

1.

Ich habe gelesen, im Genesis Block habe Satoshi N. die Nachricht (sinngemäß auf deutsch übersetzt) "Kanzler hat die Chance, die Banken zum zweiten Mal zu retten."

Meine Frage lautet: Wie ist es möglich, Nachrichten in einen Block der Blockchaon zu schreiben? Die Miner verifizieren doch nur Transaktionen, wie können also Nachrichten verankert werden?

2.

Nach meinem Verständnis lösen die Miner Rechenaufgaben, derjenige, der die Aufgabe zu erst gelöst hat, sendet die Lösung an die übrigen Miner. Ist die Lösung richtig, darf der Miner "seinen" Block mit Transaktionen an die Blockchain heften und den Blockreward kassieren.

Ist der Inhalt dieses Blockes identisch mit demjenigen, den ein anderer Miner an die Chain geheftet hätte, hätte er die Aufgabe zuerst gelöst? Oder priorisiert jeder Miner für sich individuell die Transaktionen, die er während der jeweiligen Zeiteinheit aufnimmt, so dass es von der Transaktionshistorie einen Unterschied machen könnte, ob bspw. Miner A oder Miner B die jeweilige Rechenaufgabe zuerst löst.

3.

Aufbauend auf der Annahme, dass es nur den Bruchteil einer Sekunde Kostet, damit die Miner überprüfen können, ob eine Lösung der Rechenaufgabe richtig ist:

Wieso dauert es so lange (mehrere Minuten), bis ein Block mehrere Bestätigungen erhält, bzw. über einen langen Zeitraum Bestätigungen hinzukommen? Eigentlich müsste es doch so ablaufen: Miner X löst die Rechenaufgabe umd schickt seine Lösung an die übrigen Miner. Diese überprüfen binnen Millisekunden die Lösung und bestätigen diese, sollte sie richtig sein, eine Sekunde später darf Miner X seinen Block anhängen, der von den übrigen Minern sofort bestätigt wird.

4.

Letzte Frage: Ist jeder Miner ein Fullnode? Wenn nicht, was ist die Motivation einen Fullnode zu betreiben und viel Speichplatz zu opfern?

Ich danke allen antwortenden Personen und würde mich riesig über Hilfestellung freuen.

Herzliche Grüße!

  • Confused 1
Link to comment
Share on other sites

1. Bitcoin kennt den Befehl OP_RETURN, mit dem sich bis zu 80 beliebige Bytes an eine Transaktion hängen lassen. Da Satoshi seinen Genesis-Block selbst gemined hat, mußte er sich um die Kosten dafür (die pro Byte fällig werden) natürlich keine Gedanken machen.

2. Den Ablauf stellst du etwas vereinfacht dar, aber nicht falsch. Ja, normalerweise arbeitet jeder Miner an einem Block mit unterschiedlichem Inhalt. Wie solten die sich auch alle vorher absprechen???

3. Die Zeit zwischen zwei Blöcken hängt nicht davon ab, wie lange das Verifizieren benötigt! Sondern davon, wie lange es im Mittel dauert, das nächste kryptographische Rätsel zu lösen und damit den nächsten Block zu erzeugen.

4. Mehrere. Das "Opfer" (bei mir ein übriger Raspi und eine alte Laptop-Festplatte) ist jetzt auch nicht wirklich groß. Lernprojekt, Unterstützung des Netzwerks durch Verifizieren von Blöcken und versorgen neuer Nodes, Verifizierung des eigenen Bitcoin-Investments aus erster Hand sind bei mir die wichtigsten.

  • Thanks 1
Link to comment
Share on other sites

vor einer Stunde schrieb wwurst:

1. Bitcoin kennt den Befehl OP_RETURN, mit dem sich bis zu 80 beliebige Bytes an eine Transaktion hängen lassen. Da Satoshi seinen Genesis-Block selbst gemined hat, mußte er sich um die Kosten dafür (die pro Byte fällig werden) natürlich keine Gedanken machen.

2. Den Ablauf stellst du etwas vereinfacht dar, aber nicht falsch. Ja, normalerweise arbeitet jeder Miner an einem Block mit unterschiedlichem Inhalt. Wie solten die sich auch alle vorher absprechen???

3. Die Zeit zwischen zwei Blöcken hängt nicht davon ab, wie lange das Verifizieren benötigt! Sondern davon, wie lange es im Mittel dauert, das nächste kryptographische Rätsel zu lösen und damit den nächsten Block zu erzeugen.

4. Mehrere. Das "Opfer" (bei mir ein übriger Raspi und eine alte Laptop-Festplatte) ist jetzt auch nicht wirklich groß. Lernprojekt, Unterstützung des Netzwerks durch Verifizieren von Blöcken und versorgen neuer Nodes, Verifizierung des eigenen Bitcoin-Investments aus erster Hand sind bei mir die wichtigsten.

Vielen Dank für deine ausführliche Antwort! Das war sehr nett von dir.

Zu 3. noch eine Nachfrage: Wozu dient das Verifizieren konkret, bzw. wieso dauert es relativ lange, bis Verifizierungen eingehen, wenn nach durchschnittlich 10 Minuten das kryptografische Rätsel gelöst wird und der nächste Block angehängt wird?

 

Viele Grüße

Link to comment
Share on other sites

vor 57 Minuten schrieb SkaliertDoch:

Vielen Dank für deine ausführliche Antwort! Das war sehr nett von dir.

Zu 3. noch eine Nachfrage: Wozu dient das Verifizieren konkret, bzw. wieso dauert es relativ lange, bis Verifizierungen eingehen, wenn nach durchschnittlich 10 Minuten das kryptografische Rätsel gelöst wird und der nächste Block angehängt wird?

 

Viele Grüße

Die Bestätigungen, die du meinst, sind einfach die nächsten Blöcke. Und die kommen eben im Durchschnitt nur alle 10min.

Du willst nämlich, dass zum einen deine Transaktion in einem Block und somit in der Blockchain ist und zum anderen genügend Blöcke hinten dran, damit ein 51% Angriff es möglichst schwer hat. Ein Angreifer müsste nämlich parallel eine längere Block-Kette zusammendeichseln.

  • Thanks 1
  • Like 1
Link to comment
Share on other sites

Na, du hast aber verdammt viele Beiträge hier. Trotzdem verstehe ich deine Frage zu 3. nicht. Wo und bei wem sollen denn "Verifizierungen eingehen"? Beim Bundesamt für das Bitcoinwesen? 😉 Und was verstehst du unter "dauert lange"?

Nodes sehen einen neuen Block, überprüfen ob der Hash passt (und die Nonce die Bedingungen der derzeitigen Difficulty erfüllt), und wenn das passt, haben sie ihn für sich verifiziert und geben ihn an Nachbarnodes weiter. Fertig. mehr passiert mit Blöcken nicht, außer es kommt zu einer reorg.

Wenn du die Bestätigung von Transaktionen meinst, da schaut einfach der Empfänger nach, ob sie in einen Block aufgenommen worden ist und unter wie vielen weiteren neuen Blöcken sie "begraben" wird. Bei 6 Blöcken ist die Wahrscheinlichkeit einer reorg so klein geworden, daß man die Tx als endgültig ansieht. Wenn der Absender bei den Gebühren geizig war, dann kann der erste Schritt fast beliebig lange dauern, der Rest dann ziemlich genau eine Stunde.

Edited by wwurst
  • Thanks 1
  • Like 1
Link to comment
Share on other sites

vor 4 Stunden schrieb SkaliertDoch:

Wie ist es möglich, Nachrichten in einen Block der Blockchaon zu schreiben? Die Miner verifizieren doch nur Transaktionen, wie können also Nachrichten verankert werden?

Nein, die Hauptaufgabe eines Miners ist es, einen validen Block zu bauen, der alle Konsensbedingungen des Bitcoin-Protokolls einhält und dabei sind mehrere Bedingungen einzuhalten, ansonsten würde der "neue" Block von jeder unmanipulierten (==validen) Node abgewiesen. Meines Wissens verifizieren die Miner streng genommen keine Transaktionen aus dem Mempool, wo diese gesammelt werden, um in einen Block eingefügt zu werden. Denn das sollte nicht mehr notwendig sein, da nur verifizierte Transaktionen im Bitcoin-Netzwerk von validen Nodes weiter verbreitet werden dürfen. Jede Transaktion, die fehlerhaft ist oder auf andere Art und Weise gegen die Konsensregeln verstößt, muss von validen Nodes verworfen werden. Andererseits wäre ein Miner schön blöd, sich die Arbeit zu machen, eine fehlerhafte Transaktion in einen neuen Block zu stopfen, denn dadurch würde der Block von anderen validen Nodes abgelehnt werden, was nun ganz und garnicht im Sinne eines Miners sein kann.

Der Miner muss die Coinbase als erste Transaktion eines neuen Blocks selbst generieren und da diese "speziell" ist (keine Inputs hat), darf ein Miner 98 Bytes dieser Coinbase beliebig "verwenden" (die ersten zwei müssen die Blockhöhe sein, daher können es max. 100 Bytes sein). Dieses "Datenfeld" wird auch wohl gerne als erweiterte Nonce genutzt, da die Nonce selbst, nur 4 Bytes, viel zu wenig Variation allein ermöglichen würde, um durch kleine Veränderungen des Block-Headers und anschließendem Hashen desselben, einen gültigen neuen Block-Hash zu finden, der den aktuellen Konsensregeln entspricht (der anpassbare Proof-of-work muss erfüllt sein).

Zu Punkt 2:
Nein, relativ falsche Vorstellung von dir, wie es technisch abläuft. Gehasht wird nur der Blockheader, der aber den Hash des vorherigen Blocks beinhaltet, wodurch die Verkettung zur Blockchain erfolgt. Im Blockheader ist auch der sog. Merkle-Root, im Prinzip der finale Hash eines binären Hash-Baums aller Transaktionen, die sich der Miner für seinen neuen Block "ausgesucht" hat (Optimierung des Maximums an Transaktionsgebühren mit der begrenzten Blockgröße, die nicht beliebig viele Transaktionen in einem Block zulässt). Dadurch müssen beim Hashen des Block-Headers über den Merkle-Root alle Transaktionen festgelegt sein. Änderst du auch nur eine Transaktion, ändert sich der Merkle-Root und damit dein Block-Header. Clevere Technik, da hierbei beim Hashen nicht alle Transaktionen komplett mitgehasht werden müssen, was sicherlich länger dauern würde, als 80 Bytes zweimal durch die SHA-256-Mühle zu schwurbeln.
Ist ein valider Block gefunden, dann ist es im Interesse aller, diesen möglichst schnell zu verbreiten, da der nächste Block ja auf ihn aufbauen müsste. Es kann nicht im Sinne der Miner sein, daß Risiko einzugehen, einen neuen Block u. U. nicht am "Tip" der Blockchain anzuhängen, da die Gefahr besteht, daß diese Seitenkette evtl. nicht die längste Kette wird und dann nach Konsensregeln verworfen werden muss. (Böswillige Absichten einmal außen vor gelassen.)

vor 2 Stunden schrieb wwurst:

Nodes sehen einen neuen Block, überprüfen ob der Hash passt (und die Nonce die Bedingungen der derzeitigen Difficulty erfüllt), und wenn das passt, haben sie ihn für sich verifiziert und geben ihn an Nachbarnodes weiter. Fertig. mehr passiert mit Blöcken nicht, außer es kommt zu einer reorg.

Der Hash muss die durch die aktuelle Difficulty gesetzte Proof-of-work-Bedingung erfüllen, sonst würde er nicht als gültig angesehen werden. Die Nonce muss keine Bedingungen erfüllen, die ist nur mit zum Variieren des Block-Headers da, um einen passenden Block-Hash finden zu können.

 

Ich betreibe eine Fullnode mit einem Raspi 4 aus folgenden Gründen:
Unterstützender Teil des Bitcoin-Netzwerks. Naja, gibt's quasi dazu und wenn's keiner täte, gäbe es kein Bitcoin-Netzwerk oder viel mehr Single-Points-of-failure.
Ein Electrum-Server versorgt meine Electrum-Wallet mit den notwendigen Daten, somit bleibt dieser Datenaustausch lokal und privat.
Eine Lightning-Node ermöglicht mir, an dieser spannenden 2nd-Layer-Off-chain-Technik teilzuhaben und zu lernen.
Meine Node hat einen eigenen Blockexplorer, so daß auch diese Daten lokal und privat bleiben, egal welche Blockchain-Analysen ich mache.
JoinMarket/CoinJoin als Add-on finde ich auch ganz interessant. Ist ein Lernprojekt, macht Spaß und frisst kaum Brot/wenig Strom.

So nach dem Motto: Gib' einem Menschen einen Fisch und er hat für einen Tag etwas zu essen. Lehre einen Mann Fischen und er kauft sich für ein Vermögen Angelzeugs, daß er dann nur vielleicht zweimal im Jahr benutzt. Oder so ähnlich...

  • Thanks 1
Link to comment
Share on other sites

@Cricktor @wwurst @fox42

Herzlichen Dank für die nochmalige, ausführliche Erläuterung.

Ich hatte tatsächlich nicht begriffen, dass die "Bestätigungen" schlicht die auf einen Block folgenden Blöcke sind, welche den Block mit der fraglichen Transaktion "sicherer" machen. Ich hab das immer neben einander grsehen und mich gefragt, was denn nun die Bestätigungen sind. ☹️

Ich glaub, jetzt hab ich es!

@Aktienspekulaant

Danke für den Hinweis. Tatsächlich mag das Basiswissen sein, nach dem ich gefragt habe. Dennoch war mir das mit den Nachrichten in den Blöcken neu und ich hab mich immer gefragt, wieso man einen Fullnode betreibt.

Die Frage nach den "Bestätigungen" ist mir tatsächlich peinlich.

Aber es gilt wie immer: Was für den einen Basiswissen, ist für andere Neuland. Und wer nicht fragt, bleibt dumm. 

Ich danke jedenfalls allen für die Hilfe!

 

 

Edited by SkaliertDoch
Link to comment
Share on other sites

vor 3 Stunden schrieb SkaliertDoch:

Die Frage nach den "Bestätigungen" ist mir tatsächlich peinlich.

Hoffentlich nicht zu sehr.. Es ist immer besser, einfach zu fragen, wenn etwas unklar ist. Hier in diesem Forum kommen meistens auch direkt Unterstützung und Erklärungen. In anderen Foren ist das meistens leider nicht so.. Was ich mir selber auch noch besser angewöhnen muss:

 

  • Thanks 2
Link to comment
Share on other sites

Ich würde dir raten dich nochmals systematisch einzuarbeiten mithilfe eines technische orientierten Buches oder Kurses. Das ist weit besser, als wenn du jetzt nur punktuell nachfragst, gerade als Vortragender will man ja nicht nur 1:1 das Wissen, was dann auf den Folien steht, sondern auch einen guten Gesamtüberblick haben.

  • Thanks 1
Link to comment
Share on other sites

vor 16 Stunden schrieb wwurst:

Nodes sehen einen neuen Block, überprüfen ob der Hash passt (und die Nonce die Bedingungen der derzeitigen Difficulty erfüllt), und wenn das passt, haben sie ihn für sich verifiziert und geben ihn an Nachbarnodes weiter. Fertig. mehr passiert mit Blöcken nicht, außer es kommt zu einer reorg.

Das ist schon etwas umfangreicher, denn so würden "böse" Miner ihre bösen Tx unbehelligt an den Mann (Node) bringen.

Nodes sind die einzigen die "prüfen", und natürlich müssen die auch den Blockinhalt auf Richtigkeit verifizieren, da ein Miner sonst betrügen könnte,... denn der PoW-Hash würde trotzdem richtig sein. Nodes prüfen genau genommen 2x, vor dem Miner, und nach dem Miner.

Das betreiben einer Node, ist begründet, dass man keinem fremden vertraut bzw. vertrauen muss, weil man weiß dass die eigene Node konform arbeitet. Der Konsens und die Verifikationen werden NUR durch Nodes hergestelltet 

@SkaliertDochdu hast noch so einiges Missverständnis, zb. auch im Bezug auf die Aufgabe von Miner und Nodes, aber auch zum Konsens usw.

Um zu verhindern dass du gefährliches Halbwissen weitervermittelst, würde ich empfehlen das zu "studieren", dort ist das "System" Bitcoin vollständig beschrieben.

 

Edited by o0dy
Link to comment
Share on other sites

vor 7 Minuten schrieb o0dy:

Das ist schon etwas umfangreicher, denn so würden "böse" Miner ihre bösen Tx unbehelligt an den Mann (Node) bringen.

Nodes sind die einzigen die "prüfen", und natürlich müssen die auch den Block Inhalt auf Richtigkeit verifizieren, da ein Miner sonst betrügen könnte,... denn der PoW-Hash würde trotzdem richtig sein. Nodes prüfen genau genommen 2x, vor dem Miner, und nach dem Miner. 

@SkaliertDochdu hast noch so einiges Missverständnis, zb. auch im Bezug auf die Aufgabe von Miner und Nodes, aber auch zum Konsens usw.

Um zu verhindern dass du gefährliches Halbwissen weitervermittelst, würde ich empfehlen das zu "studieren", dort ist das "System" Bitcoin vollständig beschrieben.

 

Exzellent! Das werde ich mir mal einverleiben!

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.