Struktur der Blockchain und Proof-of-Work

View this thread on: d.buzz | hive.blog | peakd.com | ecency.com
·@urdreamscometrue·
0.000 HBD
Struktur der Blockchain und Proof-of-Work
<html>
<p>Dies ist mein 10 Artikel zum Thema Bitcoin. Für alle die meine neun vorherigen Artikel über Bitcoin noch nicht kennen hier eine Übersicht:</p>
<p>&nbsp;</p>
<ol>
  <li><a href="https://steemit.com/deutsch/@urdreamscometrue/das-bitcoin-system">Das Bitcoin-System</a>&nbsp;</li>
  <li><a href="https://steemit.com/deutsch/@urdreamscometrue/erfuellung-der-drei-transaktionsbedingungen-bei-bitcoin">Erfüllung der drei Transaktionsbedingungen bei Bitcoin</a></li>
  <li><a href="https://steemit.com/deutsch/@urdreamscometrue/transaktionskonsens-bei-bitcoin-mining-und-blockchain">Transaktionskonsens bei Bitcoin (Mining und Blockchain)</a></li>
  <li><a href="https://steemit.com/deutsch/@urdreamscometrue/netzwerkknoten-bitcoin">Netzwerkknoten (Bitcoin)</a></li>
  <li><a href="https://steemit.com/deutsch/@urdreamscometrue/bitcoin-kommunikationsprotokoll-und-aktuelle-registerversion-verwaltung-des-bitcoin-systems-bip-bitcoin-ist-fiatgeld">Bitcoin Kommunikationsprotokoll und aktuelle Registerversion; Verwaltung des Bitcoin Systems(BIP), Bitcoin ist Fiatgeld</a></li>
  <li><a href="https://steemit.com/deutsch/@urdreamscometrue/pseudonyme-und-zugriffsberechtigungen-bei-bitcoin-transaktionslegitimitaet">Pseudonyme und Zugriffsberechtigungen bei Bitcoin (Transaktionslegitimität)</a></li>
  <li><a href="https://steemit.com/deutsch/@urdreamscometrue/sicherheit-bei-bitcoin-schluessel-und-pseudonyme-einstieg-hashfunktionen">Sicherheit bei Bitcoin (Schlüssel und Pseudonyme), Einstieg Hahsfunktionen</a></li>
  <li><a href="https://steemit.com/deutsch/@urdreamscometrue/transaktionen-technische-erlaeuterungen-zu-bitcoin">Transaktionen (technische Erläuterungen zu Bitcoin)</a></li>
  <li><a href="https://steemit.com/deutsch/@urdreamscometrue/delegation-an-steem-ua-block-bestandteile-bitcoin-transaktionskonsens">Delegation an@steem-ua, Block Bestandteile bei Bitcoin (transaktionskonsens)</a></li>
</ol>
<p>Dies wird vermutlich der vorletzte Artikel meiner Artikelreihe über Bitcoin sein. Daher schon hier ein Dankeschön an die Leser der Artikel und für die tollen Kommentare:)</p>
<p>In diesem Artikel machen wir (wie im letzten Artikel versprochen:D) mit dem Thema wie die Blockchain aufgebaut/wie die Blockkette strukturiert ist weiter.</p>
<h3>Blockkette</h3>
<p>Die <em>Blockchain</em> (zu deutsch <em>Blockkette</em>) hat ihren wunderschönen Namen, da die Anordnung der <em>Blöcke</em> an eine <em>Kette</em> erinnert:D</p>
<p>Soweit verständlich:D</p>
<h3>Blockhöhe und Blocktiefe</h3>
<p>Die Position eines Blockes in der Kette wird über die beiden Begriffe <em>Blockhöhe</em> und<em> Blocktiefe </em>definiert. Die Blockhöhe beschreibt sozusagen, wieviele Vorgänger ein bestimmter Block hat. Der Genesis Block bekommt hier &nbsp;als erster Block die Zahl 0. Die Blocktiefe ist das Gegenteil der Blockhöhe und beschreibt demzufolge wieviele Nachfolger ein bestimmter Block hat.</p>
<p>Dem (hoffentlich:D) aufmerksamen Leser wird aufgefallen sein, dass die Blockhöhe demzufolge <em>statisch </em>ist. Die Zahl der Vorgänger die ein Block hat kann sich ja nicht verändern. Der ausgehend vom Genesis Block (0) 100 Block wird immer der 100 Block bleiben.</p>
<p>Die Blocktiefe dagegen ist nicht statisch, da Blöcke ja gemined werden. Wenn Block xy gerade zum Beispiel 9 Nachfolger Blöcke hat, hat er in 10 Minuten sehr wahrscheinlich 10 Nachfolger Blöcke.https://cdn.steemitimages.com/DQmaWvKsUXXbQ2Dr5Azm7kbThdv3petZoQT4GaDYay29Yx6/Beispiel%20Blockkette.png</p>
<h3>Identifikationsnummer</h3>
<p>Ein Block kann natürlich auch durch seine jeweilige Identifikationsnummer zugeordnet werden. Aufgrund der Kollisionsresistenz der SHA256 Hashfunktion kann eine Identifikationsnummer innerhalb der Kette nicht doppelt vorkommen.</p>
<p><br></p>
<p>Wie wir schon gelernt haben, besteht die Identifikationsnummer (ID) aus dem SHA256d Hashwert des Block Headers (das d steht dafür, dass die SHA256 Hahsfunktion doppelt angewandt wurde).</p>
<p>SHA256 Hashwerte haben eine Länge von 256 Bits, die der Einfachheit halber meistens als (64-stellige) Hexadezimalzahl dargestellt werden.</p>
<p>Da die Identifikationsnummer (Hashwert des Block Headers) immer im Nachfolger Block referenziert wird, werden die Blöcke in die Kette "eingebunden". Die einzelnen Block Bestandteile können danach nicht mehr verändert werden, da sich sonst die Block ID des Blocks ändern würde - und damit auch die Block ID des nächsten Blockes, da dieser ja den vorherigen veränderten Block referenziert (dessen Block ID sich verändert hat). Dadurch das der Block nun eine andere Block ID refrenziert verändert sich auch der Hashwert (und damit die Block ID) dieses Blockes. Und immer so weiter bis hin zum aktuellsten Block. Wenn du also zb Block Nr 2399 manipulierst (sprich veränderst) ändert sich die Block ID dieses Blockes wodurch die gesamte Blockchain (von Block Nr 2399 bis zum aktuellsten Block) nicht mehr zusammen passen würde/zerstört werden würde.</p>
<p>Anmerkung: Du kannst so natürlich nicht die komplette Blockchain und Bitcoin zerstören. Dafür müssten alle anderen Knoten deine "super neue Blockchain" (die die du manipuliert hast:D) annehmen was natürlich nicht geschehen wird; sprich du kannst dir die Blockchain herunterladen und darin soviel herumpfuschen wie du willst, du wirst damit weder die Blockchain manipulieren noch Bitcoin zerstören können:D Du veränderst nur eine Datei die danach nicht mehr der Wahrheit entspricht und darum von keinem anderen Netzwerkknoten angenommen werden wird (jeder kann ja prüfen ob die Datei der Wahrheit entspricht).</p>
<p>Die Blockinhalte sind also durch die Kettenstruktur und die Referenzierung mit Hashwerten geschützt.</p>
<p><br></p>
<h3>Wie die Blockkette erweitert wird&nbsp;</h3>
<p>Theoretisch wissen wir schon alle, wie neue Blöcke erstellt werden (Artikel 3). Jetzt werden wir uns genauer damit beschäftigen. Es gibt bei der Erstellung von Blöcken besonders ein problem, für welches in Artikel 3 nur schnell die Lösung genannt worden ist.</p>
<p>Das Problem ist, dass es ja nicht nur einen einzigen Miner gibt. Es gibt unzählige verschiedene Miner die sich gerade eben alle Blockkandidaten erstellen. Die Blockkandidaten die sie gerade erstellen sind allesamt gültig. Doch sie referenzieren alle den gleichen Vorgänger Block (den bis gerade aktuellsten Block der Blockchain). Es kann jedoch nur einen Block geben, der sich auf diesen Block referenziert (wenn das Erreichen eines Konsens funktionieren soll). Andernfalls würden Forks entstehen: die Miner würden alle ihren eigenen Block referenzieren und so verschiedene Kettenstränge erzeugen (am Ende gäbe es x-verschiedene Ketten Versionen; Double Spend würde nicht verhindert werden, keiner wüsste welche Ketten Version nun die richtige und aktuelle ist etc).</p>
<p>Dieses Problem wird durch Proof-of-Work gelöst.</p>
<p>(Legitimität wird wie in Artikel 2 gesichert)</p>
<h3>Proof-of-Work</h3>
<p>Selbst wenn alle Miner legitime Blockkandidaten erstellen haben wir ein Konsens Problem. Dieses wird durch <em>Proof-of-Work</em> gelöst(Arbeitsnachweis).</p>
<p>Wie schon in Artikel 3 erklärt geht das Erzeugen eines Blockkandidaten sehr schnell (in Sekundenbruchteilen). Neue Blockkandidaten können also viel schneller erzeugt werden, als sich das Netzwerk auf einen Zustand einigen kann. Es muss also eine künstliche Beschränkung geben, die die Geschwindigkeit der Blockaufnahme drosselt (optimalerweise dynamisch an die rechenleistung des Netzwerkes angepasst).</p>
<p>Das Konzept hinter Proof-of-Work ist eigentlich ganz einfach. Eine eigentlich einfache Tätigkeit (welche zu schnell gelöst wird) wird durch eine trial-and-error Aufgabe komplizierter gemacht. Nur wenn diese Aufgabe mitgelöst wird, wird die Tätigkeit ausgeführt. Zur Lösung der trial-and-error Aufgabe werden im Schnitt x- Versuche benötigt. Durch die Schwierigkeit der trial-and-error Aufgabe kann also die durchschnittliche Dauer zur Lösung dieser Aufgabe angepasst werden.</p>
<p>Bei Bitcoin ist die trial-and-error Aufgabe die Identifikationsnummer des Blocks unter einen bestimmten Schwellenwert zu bekommen. Da man bei der verwendeten SHa256d Hashfunktion nicht erkennen kann, welche Eingabe zu welcher Lösung führt muss die Identifikationsnummer durch (zufälliges) Ausprobieren verschiedener Block Inhalte unter den Schwellenwert gebracht werden.</p>
<p>Diese Veränderungen am Block Inhalt um die Identifikationsnummer unter den Schwellenwert zu bekommen wird als Mining bezeichnet. Wie im letzten Artikel schon erklärt wird diese Veränderung des Block Inhaltes meist nur durch eine Veränderung der Nonce erzeugt, wenn alle möglichen Nonce Werte erfolglos durchprobiert werden, können Zeitstempel und das Auszahlungsskript der Coinbase Transaktion (Extranonce) verändert werden.</p>
<h3>Schwellenwert</h3>
<p>Wie bereits in Artikel 3 erklärt ist der Schwellenwert dynamisch (aufgrund von evtl steigender Miner Zahl und damit- sowie durch technologisch bedingter- steigender Rechenleistung).&nbsp;</p>
<p>Der Schwellenwert wird so angepasst, dass alle Miner zusammen im Schnitt nur alle 10 Minuten einen neuen Block erstellen können. Der Schwellenwert wird alle 2016 Blocks neu angepasst.</p>
<p><em>Schwellenwert(neu)=Schwellenwert(alt)*tatsächliche Zeitdauer/Erwartungswert(t)</em></p>
<p>Da die Erstellungsdauer pro Block 10 Minuten betragen soll und der Schwellenwert alle 2016 Blöcke geändert wird ist der Erwartungswert eine Konstante (20160 Minuten).</p>
<p>Um die Veränderung des Schwellenwert Parameters abbilden zu können wird meist die Difficulty genommen. (Kehrwert des maximalen Schwellenwertes/durch Kehrwert des aktuellen Schwellenwertes).</p>
<p>Das bedeutet die Difficulty bewegt sich als Graph in die entgegengesetzte Richtung des Schwellenwertes. Wird der Schwellenwert kleiner wird das Finden eines neuen Blocks schwieriger und die Difficulty nimmt zu. (eigentlich logisch).</p>
<p><em>Zur Difficulty im Laufe der Zeit verlinke ich unten eine Quelle (sind auch andere interessante Charts auf der Seite zu sehen).</em></p>
<h3><em>Quellen</em></h3>
<ul>
  <li>Etwas über "Protocol rules"&nbsp;</li>
</ul>
<p>https://en.bitcoin.it/wiki/Protocol_rules</p>
<ul>
  <li>Die Seite mit der "Difficulty im Laufe der Zeit" die ich oben angesprochen habe.(auch sonst interessante Charts)</li>
</ul>
<p>https://www.blockchain.com/de/charts/difficulty?scale=1&amp;timespan=all</p>
<p>&nbsp;</p>
<ul>
  <li>&nbsp;Mein Wissen über dieses Thema habe ich größtenteils aus diesem Buch. Ich kann es sehr empfehlen.</li>
</ul>
<p><a href="https://www.amazon.de/gp/product/3738653929/ref=as_li_tl?ie=UTF8&amp;tag=urdreamscomet-21&amp;camp=1638&amp;creative=6742&amp;linkCode=as2&amp;creativeASIN=3738653929&amp;linkId=d95515f27071b70b443408ad7170a100">https://www.amazon.de/gp/product/3738653929/ref=as_li_tl?ie=UTF8&amp;tag=urdreamscomet-21&amp;camp=1638&amp;creative=6742&amp;linkCode=as2&amp;creativeASIN=3738653929&amp;linkId=d95515f27071b70b443408ad7170a100</a></p>
<p>Dies ist ein ref Link von mir zu dem Buch.&nbsp;</p>
<ul>
  <li>Die Abbildung habe ich selbst mithilfe von Paint3D erstellt (darum ist sie so schief:D). Als Vorlage diente mir Abbildung 56 des oben verlinkten Buches.</li>
  <li>Ebenfalls als Quelle empfehlen kann ich Medium und <a href="https://coinforum.de/forum/19-technik-entwicklung-sicherheit/">https://coinforum.de/forum/19-technik-entwicklung-sicherheit/</a></li>
</ul>
<p><br></p>
<p><br></p>
<p><br></p>
</html>
👍 , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,