btc.crunch Posted July 22, 2017 Posted July 22, 2017 Servus, aktuell zeigt mein Core-Wallet folgende Meldung an: "Warnung: Unbekannte Blockversion wird durch Mining erzeugt! Es ist möglich, dass unbekannte Regeln in Kraft sind." Ich vermute, dass dürfte bei jedem Core Wallet so sein und hängt mit der BIP141 bzw. BIP91 Signalisierung zusammen!? Kann jemand den Hintergrund der Meldung erklären? Vielen Dank und Gruß, btc.crunch
Amsi Posted July 22, 2017 Posted July 22, 2017 Ja, zeigt mein Full Node ebenfalls an - es ist ein Warnhinweis bzgl. der Blockgeschichte. Sollten einige Miner ihre Blöcke doch nicht "mit SegWit" minen, dann könnte es auf der Chain zu Problemen kommen. Dieses Problem sollte aber nur auftreten, wenn nicht so eindeutig geminet wird als aktuell signalisiert (knapp 85% SegWit). Kurz erklärt: Die SegWit-Blöcke werden von den non-SegWit Blöcken akzeptiert, aber nichts andersrum. Für unsere Full Nodes zählt aber immer die längste Kette und diese könnte sich dadurch häufig "ändern" und deshalb dieser Hinweis. Es wäre also zB möglich, dass dir jemand einen BTC schickt, du siehst diesen in deinem Core aber wenn der nächste Block da ist, ist davon in deinem Core auf einmal nichts mehr ersichtlich, vl. beim Nächsten dann wieder schon usw. 1
btc.crunch Posted July 22, 2017 Author Posted July 22, 2017 Okay, danke! Hatte auch in diese Richtung gedacht. Wird von Julian Hosp in diesem Video auch gut erklärt: https://www.youtube.com/watch?v=4hn8FYEP8BA Mich wundert nur, dass die Meldung jetzt schon angezeigt wird. Sind ja noch ein paar Tage hin, bis es soweit kommen könnte.
c0in Posted July 22, 2017 Posted July 22, 2017 (edited) Kurz erklärt: Die SegWit-Blöcke werden von den non-SegWit Blöcken akzeptiert, aber nichts andersrum. Für unsere Full Nodes zählt aber immer die längste Kette [...]Die die sich auskennen wissen was gemeint ist, aber auch in meiner lern fase, war ich immer verwirrt, über solche aussagen, bzw. bin es heute noch. Deshalb erkläre ICH gerne etwas so, dass es auch Neulinge leichter verstehen. Also mein Versuch. Ein Block wird nicht von einem Block akzeptiert, sondern von einem Fullnode, der einen eingehenden Block überprüft, und ihn an seine Block-Kette hängt. Ein Fullnode, überprüft einen Block der von einem Miner zusammengestellt wird, wenn alles in Ordnung ist, hängt der Fullnode diesen Block an SEINE Kette, und sendet ihn an andere Fullnodes, die wiederum dasselbe machen, bis in "alle" Fullnodes haben. Ein Fullnode, überprüft die Transaktionen die von einer Wallet in das Netzwerk gesendet werden, wenn damit alles in Ordnung ist sendet der die Transaktion an weitere Fullnodes, und legt sie in seinem Transaktionspool ab. Ein Miner betreibt normalerweise einen eigenen Fullnode und hat dadurch (im Normalfall) eine aktuelle Kette und neue Transaktionen, daraus nimmt er sich mehrere Transaktionen heraus, bildet daraus einen neuen Block, und wendet darauf dann den Proof-of-Work-Algorithmus an. Ein fertiger Block wird wieder zu einem Fullnode (meistens seinen) gesendet, der prüft wiederum ob alles richtig ist, und hängt den Block dann an SEINE Blockkette an, sendet den Block wiederum weiter zu anderen Fullnodes, die wiederum das selbe machen, bist "jeder" den neuen Block hat. Also der Verlauf in Kurzform. ein Benutzer bildet mit seiner Wallet eine Transaktion und sendet die in das Netzwerk (zu einem Fullnode) der Fullnode überprüft diese Transaktion, mit Hilfe einer Checkliste, (u.A. auch ob derjenige auch das "Geld" hat, was er überweisen will) wenn etwas nicht stimmt, verwirft der Fullnode die Transaktion einfach. Wenn die Transaktion valide ist wird die Transaktion an andere Fullnodes weiter gesendet, und gleichzeitig wird die Transaktion in SEINEM Transaktionspool gespeichert. Jeder Fullnode der eine Transaktion bekommt mach genau dasselbe wie sein Vorgänger, dadurch hat bald jeder Fullnode die neue Transaktion in SEINEM Transaktionspool. ein Miner (der i.d.R. seinen einen eigenen Fullnode betreibt) stellt sich aus dem (seinem) Transaktionspool dann einen Block aus mehreren Transaktionen zusammen, und wendet den Proof-of-Work-Algorithmus an, sendet ihn dann wieder ins Netzwerk zu einem Fullnode (der i.d.R. zu seinem). der Fullnode überprüft diesen Block wiederum mit Hilfe einer Checkliste wenn etwas nicht stimmt, verwirft der Fullnode diesen Block einfach. Wenn der Block valide ist wird der Block an andere Fullnodes weiter gesendet, und gleichzeitig hängt er den Block an seine Blockkette. Jeder Fullnode der einen Block bekommt mach genau dasselbe wie sein Vorgänger, dadurch hat bald jeder Fullnode den neuen Block in SEINER Blockkette. ... und das Spiel kann von vorne losgehen ... und ganz kurz Fullnodes prüfen ob alles Korrekt ist Miner setzen Transaktionen in Blöcken zusammen Wenn ein Fullnode bemerkt dass es eine längere gültige Blockkette gibt, wird zu dieser gewechselt. Gleiches gilt bei einem Miner wenn der bemerkt dass der gerade bearbeitete Block schon von einem anderen ins Netzwerk gestellt wurde, unterbricht der sofort die Arbeit und beginnt mit einem neuen Block. Bitte korrigiert mich wenn ich etwas falsch sehe, oder falsch formuliert habe. Hier ein Video dass die Blockchain anschaulich erklärt. Wie funktioniert die Blockchain? -- Einfach erklärt! Edited August 15, 2017 by c0in 3
fjvbit Posted July 22, 2017 Posted July 22, 2017 @coin Gut erklärt, es feht vielleicht der Hinweis, das ein Fullnode seine eigene Kette verwirft, wenn er eine längere gültige bekommt. Dann ersetzt er seine eigene mit der längeren.
bavarian Posted July 23, 2017 Posted July 23, 2017 (edited) Wie ermittelt ein Node eigentlich wo die längste Kette ist? Plausibel fände ich sowas: Node läßt sich von all seinen Peers den Blockcount schicken und pickt den raus, der den höchsten Count hat. Von dem fordert er dann den letzen Block an den er selbst in seiner eigenen Chain hat und vergleicht diesen damit. Wenn er gleich ist, dann werden alle folgenden Blocks angefordert, validiert und angehängt, falls nicht gehe Block für Block zurück solange, bis die Blöcke gleich sind. Dann werden alle anderen Blocks dahinter verworfen und die richtigen angehängt. Passiert das auch so oder is das noch anders? Edited July 23, 2017 by bavarian
c0in Posted July 23, 2017 Posted July 23, 2017 (edited) Ein Fullnode sendet wenn er neu startet eine (Inventar) Nachricht an seine "Kollegen", dadurch können die ihm mitteilen welche Blöcke fehlen, die der dann verteilt anfordert um die Last zu verteilen. Verbundene Fullnodes tauschen regelmäßig den Hash ihres Topblocks aus, wenn ein "Kollege" erkennt dass er selber eine längere Kette hat (da dieser Block-Hash bei ihm schon etwas weiter hinten liegt), teilt er dem anderen mit, welche Blöcke ihm fehlen die der dann anfordert. Edited July 23, 2017 by c0in 2
konabi Posted August 16, 2017 Posted August 16, 2017 Eine Frage hätte ich noch. Beispiel: Wir haben 5 Transaktionen A B C D E Miner 1 nimmt sich Transaktion A B C und baut daraus einen Block.Miner 2 nummt sich die Transakionen C D E und baur daraus einen Block.Miner 1 hat den Block zuerst fertig gestellt. Also müsste doch Miner 2 seinen Block verwerfen , da er in seinem Block die Transaktion C hat, welche schon im Block von Miner 1 fertiggestellt wurde.Somit müssten dann aber auch Transaktion D und E wieder in den Transaktionspool von Miner 2 zurückgehen und auch an die anderen Transaktionspools der Miner verteilt werden. Oder wie wird das geregelt?
c0in Posted August 16, 2017 Posted August 16, 2017 (edited) Miner 1 hat den Block zuerst fertig gestellt. Also müsste doch Miner 2 seinen Block verwerfen , da er in seinem Block die Transaktion C hat, welche schon im Block von Miner 1 fertiggestellt wurde. Sagen wir mal der letzte gültige Block hat die Nummer 100 Wenn ein anderer Miner Block(101) fertig bekommt, verwerfen alle Miner ihre Blöcke die ja auch die Nr.(101) hätten, egal welche Transaktionen sie darin haben. Währenddessen ein Miner einen Block mined, stellt er nebenbei im voraus wieder einen neuen Block aus dem Speicherpool zusammen. Wenn dann eben ein anderer Miner den Block(101) vor ihm fertig bekommt, schaut er nach ob in seinem (nebenbei neu zusammengestellten) Block, Transaktionen enthalten sind die schon im "jetzt" letzten Block vorhanden sind, wirft sie aus seiner "neuen" Zusammenstellung raus, und fängt sofort an, einen neuen Block zu minen. Nach dem Empfang des letzten Block(101) wird jeder Miner auch alle Transaktionen im Speicherpool überprüfen, und alle im letzten Block enthaltenen Transaktionen entfernen. Somit bleibt bei den Miner, im Speicherpool nur die Transaktionen über, die noch nicht in einem Block sind. Edited August 16, 2017 by c0in
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now