Die Vertrauensmaschine - Teil 3: Vierfache Buchführung

28. Aug'21

Übersetzung des Blogartikel von Autor Hans Moog, IOTA Foundation.


Entwurf einer geisteswissenschaftlichen Vertrauensschicht für die digitale Welt




In den letzten beiden Teilen dieser Blogserie haben wir grundlegende Fakten über DLTs diskutiert und die Idee vorgestellt, Vertrauen aus der realen Welt als Sybil-Schutzmechanismus zu nutzen.

In diesem Teil werden wir etwas technischer und besprechen eine der Schlüsselinnovationen von IOTA - die vierfache Buchführung (früher bekannt als parallel-reality-ledger-state) - welche die Grundlage für IOTAs einzigartigen Ledger bildet.



Die Geschichte der Buchhaltung

Um die Entscheidungen, die dieser Form der Buchhaltung zugrunde liegen, zu verstehen, werden wir die verschiedenen Formen der Buchhaltung, die im Laufe der Geschichte der Menschheit verwendet wurden, in chronologischer Reihenfolge besprechen.


Einfache Buchführung

Die Geschichte der Buchhaltung beginnt vor Zehntausenden von Jahren im frühen Mesopotamien. Fortschritte im Lesen, Schreiben und in der Mathematik führten zum ersten Buchhaltungssystem - der einfachen Buchführung.

Es handelt sich um eine sehr einfache Form des Ledger (dt. Hauptbuch), mit der die meisten Menschen vertraut sind, und sie besteht in der Regel aus einer Liste von Einträgen mit drei Spalten. Erhöhungen des Saldos werden in der Regel in schwarzer Schrift und Verminderungen in roter Schrift (mit Klammern) dargestellt:



Dieses Hauptbuch ist sehr einfach zu verstehen, und wir verwenden diese Form der Buchführung auch heute noch (z. B. für kleine Unternehmen oder zur Überwachung der Ausgaben eines Haushalts).

Sein größtes Problem ist, dass es sehr schwer zu prüfen oder Berichte zu erstellen ist. Stellen Sie sich vor, Sie versuchen, die Frage zu beantworten: "Wie viel Geld wurde für Miete ausgegeben?".

Die einzige Möglichkeit, diese Frage zu beantworten, bestünde darin, jeden einzelnen Eintrag im Hauptbuch durchzugehen und die entsprechenden Werte zu summieren, wenn sie in eine bestimmte Kategorie passen (was ein sehr ineffizienter und mühsamer Prozess ist - insbesondere bei großen Hauptbüchern).



Doppelte Buchführung

Mit der zunehmenden Komplexität der Gesellschaft wurden auch die wirtschaftlichen Aktivitäten der Menschen immer komplexer, und es entstand der Bedarf an einem anderen und effizienteren Buchhaltungssystem.

Im Jahr 1494 veröffentlichte ein italienischer Mönch namens Luca Pacioli ein Manuskript, in dem er eine neue Form der Buchführung beschrieb - die doppelte Buchführung.

Sie funktioniert sehr ähnlich wie die einfache Buchführung, aber anstatt nur ein einziges Konto zu führen, das z. B. den Bargeldbestand eines Unternehmens darstellt, werden mehrere verschiedene Konten geführt, die nach ihrem Thema und/oder ihrer Zugehörigkeit zu einer bestimmten Identität getrennt sind.


Anmerkung: Die Sammlung von Konten, die sich auf eine wirtschaftliche Einheit beziehen, wird als Buch bezeichnet, und die Führung dieser Konten wird als Buchhaltung bezeichnet.



Jedes Mal, wenn wir eine Buchung auf unserem Kassenkonto vornehmen, nehmen wir auch eine entsprechende, aber umgekehrte Buchung auf einem anderen Konto vor. Schließlich entspricht jede Zunahme auf unserem Geldkonto einer Abnahme auf dem Geldkonto eines anderen (und umgekehrt).

Wenn man sich die verschiedenen Konten ansieht, wird es sehr einfach, alle möglichen Fragen zum Betriebsstatus einer Organisation zu beantworten, aber es wird auch einfacher, die Gültigkeit von z.B. gemeldeten Steuernummern zu prüfen (da die Bücher verschiedener Organisationen übereinstimmende Zahlen aufweisen müssen).

Dies hat die Transparenz massiv erhöht und Betrug und Korruption verringert, wodurch noch größere Wirtschaftsakteure entstehen konnten.



Dreifache Buchführung

Die doppelte Buchführung verbesserte zwar die Überprüfbarkeit der Wirtschaftsakteure, aber jeder führte nach wie vor seine eigenen Bücher, und die Prüfung dieser Bücher war ein manueller und mühsamer Prozess, der oft fehleranfällig war.

Die Distributed-Ledger-Technologie führt nun einen dritten Eintrag ein - die Transaktion (die in der vorherigen Abbildung als gestrichelte Linie dargestellt wurde) - und hält sie in einem öffentlichen und fälschungssicheren Hauptbuch (Ledger) fest. Sie enthält die Anweisungen, wie der Zustand des Ledgers zu ändern ist. Nodes, die an einem dezentralen Ledger teilnehmen, einigen sich auf einen Ausgangszustand (die Genesis) und wenden dann einfach dieselben Transaktionen an, um zum selben Ergebnis zu gelangen.

Zum ersten Mal in der Geschichte der Menschheit waren wir in der Lage, ein völlig offenes und sicheres Verfahren zur kollektiven Führung eines gemeinsamen Hauptbuchs zu verwenden, was zu elektronischem Bargeld und programmierbarem Geld führte.

Während die Ideen der dreifachen Buchführung von der doppelten Buchführung inspiriert sind, bei der jede Transaktion die Salden auf zwei Seiten (Sender und Empfänger) verändert, verwendet sie eine etwas andere Terminologie, die darauf abzielt, die zuvor diskutierten Konzepte zu verallgemeinern.

Anstelle der Verfolgung von Salden, die mit verschiedenen Konten verbunden sind (was nur notwendig war, um das Hauptbuch für den Menschen leichter lesbar zu machen), verfolgt das Hauptbuch die Salden einzeln. Sobald ein Guthaben durch eine Transaktion verbraucht wird, wird es als verbraucht markiert, und es werden neue Guthaben erstellt, die das Ergebnis der entsprechenden Transaktion sind.

Guthaben können nur insgesamt ausgegeben werden, und jede Transaktion muss neue Guthaben gemäß einem bestimmten Smart Contract erzeugen (z. B. genau die gleiche Menge an Guthaben erzeugen, die verbraucht wurde). Transaktionen können demnach als kleine Programme betrachtet werden, die vorhandene Guthaben als Inputs verwenden, um neue Guthaben als Outputs zu erzeugen.

Eine Möglichkeit, dies zu modellieren, ist ein DAG, bei dem die Transaktionen die Schnittstellen sind, die alle jemals existierenden Ausgaben miteinander verbinden.

Der Geldfluss bildet ein DAG, das alle Outputs (Guthaben) kausal miteinander verbindet.


Die Möglichkeit, einen Output auszugeben, ist in der Regel an eine Bedingung geknüpft (z. B. den Nachweis des Zugriffs auf den Private Key einer kryptografischen Adresse), und die Menge der nicht ausgegebenen (unspent) Outputs an der Spitze dieser DAG wird als aktueller Ledger-State betrachtet.


Die grünen (nicht ausgegebenen) Outputs stellen den aktuellen Ledger-State dar.


Dieses Modell wird als UTXO-Modell (unspent transaction output) bezeichnet und stellt eine der wichtigsten Innovationen von Satoshi Nakamoto dar.



Gesamtreihenfolge im UTXO-Modell

Ein faszinierender Aspekt dieser Form des Ledger-State ist, dass sie sich nicht auf eine Gesamtreihenfolge von Ereignissen stützt, um Transaktionen zu validieren, und dass die Durchführung der gleichen Transaktionen zu genau dem gleichen Ledger-State führt, unabhängig davon, in welcher Reihenfolge die Transaktionen eintreffen.

Die Durchführung unabhängiger Transaktionen in einer anderen Reihenfolge führt zum gleichen Ledger-State.


Selbst Nodes, die abhängige Transaktionen in völlig anderer Reihenfolge sehen, können immer noch zum gleichen Ledger-State gelangen, wenn sie einfach mit der Ausführung warten, bis alle Eingaben jeder Transaktion eingegangen sind.

Transaktion 5 kommt vor ihrer abhängigen Transaktion 3 an


Wir nennen Transaktionen, deren Eingaben bekannt sind, solid (dt. stabil, verfestigt) und den Prozess des Wartens auf fehlende Informationen solidification.

Man könnte sich fragen, warum Blockchains auf eine Gesamtreihenfolge angewiesen sind, wenn das zugrundeliegende Ledger nicht davon abhängig ist, und der Grund dafür ist sehr einfach:

Das UTXO-Modell hat keine sinnvolle Möglichkeit, doppelte Ausgaben (double spend) zu behandeln. Würde jemals ein Double Spend zum Ledger hinzugefügt werden, würde das Gesamtangebot erhöht werden, was zu Dingen wie unerwünschter Inflation führen würde.


Die einzige bekannte Möglichkeit, mit diesem Problem umzugehen, besteht darin, eine gemeinsame Zeitwahrnehmung zu schaffen, die es den Validierern ermöglicht, sich darauf zu einigen, welche Transaktionen zum Ledger-State hinzugefügt werden sollen.

Bitcoins longest chain wins consensus ist im Wesentlichen ein Abstimmungsmechanismus über die Zeitwahrnehmung - eine dezentrale Uhr -, die von vielen Experten oft als die größte Errungenschaft der DLTs bezeichnet wird.



Vierfache Buchführung

Aus den vorangegangenen Erörterungen im zweiten Teil dieser Blogserie wissen wir, dass die einzige Möglichkeit, eine Gesamtreihenfolge zu erstellen, darin besteht, das Netzwerk entweder synchron zu machen (indem es künstlich verlangsamt wird) oder die Anzahl der Validierer auf eine kleine Gruppe zu beschränken.

In Anbetracht der Tatsache, dass praktisch alle Kompromisse in modernen DLTs auf dieses grundlegende Problem hinauslaufen, wollen wir versuchen, das Problem der doppelten Ausgaben auf eine völlig andere Weise anzugehen.


Eine neue Form des Ledgers

Anstatt zu verhindern, dass Double Spends in den Ledger gelangen, wollen wir eine neue Art von Ledger entwerfen, die Double Spends versteht und in der Lage ist, alle widersprüchlichen Ledger-State-Versionen zur gleichen Zeit zu verfolgen.

Zu diesem Zweck werden wir das UTXO-Modell um eine weitere Dimension erweitern (Vierfachbuchhaltung), bei der jede Transaktion und jede Ausgabe mit einem Container verbunden ist, der eine bestimmte Version des Ledger-State darstellt. Wir nennen diesen Container einen Branch (dt. Zweig).

Wenn es keine Konflikte gibt, sind alle Transaktionen und Outputs Teil der gleichen Version des Ledger-State, die wir als Master-Branch bezeichnen. Wenn ein Konflikt zwischen Transaktionen festgestellt wird, wird ein neuer Branch erzeugt, der die konfliktbehaftete Transaktion selbst und alle von ihr direkt oder indirekt erzeugten Outputs enthält.


Dasselbe Beispiel wie zuvor, aber mit Transaktionen/Ausgaben, die in den entsprechenden Branches gruppiert sind


Branches, die durch Transaktionen gebildet werden, die denselben Output ausgeben, sind Teil eines Konfliktsets. Da Transaktionen mehrere Outputs ausgeben können, können sie Teil mehrerer Konfliktsets sein.

Outputs innerhalb eines Branch können ein anderes Mal doppelt ausgegeben werden, wodurch Branches rekursiv Sub-Branches bilden können. Jeder Branch speichert einen Verweis auf den übergeordneten Branch, von dem er sich abgespalten hat, und bildet den Branch DAG mit dem Master Branch an seiner Wurzel. Jeder Branch erbt rekursiv den Ledger-State seiner Vorfahren.


Branch-DAG mit Branches in blau / Konfliktsätzen in rot / aggregierten Branches in orange



Branches sind konfliktbehaftet, wenn sie selbst oder einer ihrer Vorgänger Teil derselben Konflikt-Sets sind.

Bei der Buchung von konfliktfreien Transaktionen wird der zugehörige Branch von den Outputs geerbt, die als Inputs verwendet werden. Wenn transactions spend outputs von mehreren konfliktfreien Branches verwendet werden, dann werden ihre outputs in einen aggregierten Branch gebucht, der als Platzhalter für die Liste der zugrunde liegenden Konflikte dient.

Zusätzlich zu dieser Datenstruktur werden nun einige Regeln definiert, die Transaktionen erfüllen müssen, um als gültig zu gelten:

  1. Transaktionen müssen genau die gleiche Menge an Geldern erzeugen, wie sie verbrauchen.
  2. Transaktionen dürfen niemals Outputs aus konfligierenden Branches ausgeben.
  3. Transaktionen dürfen niemals einen Output ausgeben, der bereits von einer anderen Transaktion in ihrer eigenen Vergangenheit ausgegeben wurde (siehe Beispiel).


Transaktion 2 ist nach Regel 3 ungültig - sie gibt ihren eigenen Großvater doppelt aus (Ausgabe A)


Mit diesen 3 Regeln können wir sicherstellen, dass alle Ledger-State-Versionen immer konsistent bleiben und ein korrektes Gesamtangebot aufrechterhalten wird.

Nachdem wir durch unseren Konsensmechanismus auf höherer Ebene eine Entscheidung über einen Konflikt getroffen haben, können wir den siegreichen Branch wieder mit dem Master Branch zusammenführen und die konfliktreichen Branches, die durch den Konsens abgelehnt wurden, entfernen.


Nachdem wir einen Konsens erreicht haben, bereinigen wir die Branch-DAG und fügen die Gewinner-Branches wieder in den Master-Branch ein.


Dies mag sich zunächst sehr komplex anhören, ist aber nur ein effizienter Weg, um all die verschiedenen Ledger-State-Versionen zu speichern, ohne redundante Informationen speichern zu müssen. Jeder Output wird nur ein einziges Mal gespeichert, und die Speicherung von 1000 widersprüchlichen Transaktionen kostet uns fast genau die gleiche Menge an Ressourcen wie die Speicherung von 1000 ehrlichen Transaktionen (abgesehen von einem konstanten Overhead für den zusätzlichen Eintrag in der Branch-DAG).

Um die neuen Konzepte in ein paar Worten zusammenzufassen:

  • Branches ermöglichen es uns, die Ausgaben verschiedener Versionen des Ledger-State zu unterscheiden.
  • Konfliktsets modellieren die Konfliktbeziehungen zwischen den Branches.
  • Die Branch-DAG ermöglicht es uns, die kausalen Abhängigkeiten zwischen den verschiedenen Branches zu verfolgen (um den Ledger-State zu vererben und um auf Konflikte zu prüfen).



Implikationen

Anstatt sich über das Schicksal jedes Konflikts zum Zeitpunkt des Eintreffens einigen zu müssen, können wir die Konfliktlösung auf eine höhere Ebene verlagern, indem wir das Ledger in eine Datenstruktur verwandeln, die einfach alle Zustandsübergänge verfolgt, die von ihren Nutzern vorgeschlagen wurden (auch die konfliktreichen).

Auf diese Weise können wir eine DLT aufbauen, bei der wir keine speziellen Instanzen mehr benötigen, die das Ledger vor böswilligen Schreibvorgängen schützen (wie Miner in einer Blockchain). Jeder kann einfach direkt und kostenlos in das Ledger schreiben, indem er seine Transaktion mit dem Rest des Netzwerks teilt, und jeder kann seinen Ledger-State völlig unabhängig voneinander aktualisieren.

Alle Nodes, die dieselben Informationen sehen, sind in der Lage, genau dieselben Ledger-State-Versionen zu konstruieren, was den Ledger in einen konfliktfreien replizierten Datentyp verwandelt, der vollständig parallel und ohne jede Art von Koordination oder künstliche Verlangsamung aktualisiert werden kann.




Schlussfolgerung

Wir haben eine neue Form des Ledgers entworfen, die es uns ermöglicht, die Verarbeitung von Transaktionen und die Konsensfindung über die bestehenden Konflikte zu entkoppeln.

Dies führt nicht nur zu einem viel offeneren und demokratischeren Ledger-Design, das keine Mittelsmänner mehr braucht, die den Akt des Schreibens in das Ledger schützen, sondern es beseitigt auch die Notwendigkeit einer übermäßig strikten Koordination zwischen den validierenden Nodes, was es uns später ermöglichen wird, Satoshis Prinzipien zu verwenden, ohne die Aussagen der Validierer verlangsamen zu müssen, was wiederum dazu führt, dass der Akt der Konsensfindung ein kollaborativer Prozess anstelle eines kompetitiven Prozesses wird.

Ein Großteil der Arbeit der letzten Jahre floss in den Entwurf und die Konzeption dieser Form des Ledgers. Das Design, das jetzt sehr einfach und elegant klingt, war nicht immer so einfach, da wir keine Ahnung hatten, wie das beste Design aussehen würde. Nach einigen Iterationen sind wir nun jedoch zuversichtlich, dass es nicht mehr möglich sein wird, diese Prinzipien weiter zu vereinfachen.

Diese Form des Ledgers beweist, dass es nicht notwendig ist, eine Gesamtreihenfolge der Ereignisse festzulegen, um mit Konflikten umzugehen.


Der einzige Grund, warum heutige DLTs auf eine Gesamtreihenfolge angewiesen sind, ist, dass sie eine Datenstruktur verwenden, die Konflikte nicht versteht.




Nachtrag: Parallelen zu unserer physischen Welt

Wenn wir uns das Verhalten dieses Ledgers ansehen, dann sehen wir viele Parallelen zu unserem physikalischen Universum, und auch wenn es nicht direkt mit dem Thema DLTs zusammenhängt, denke ich, dass es ein Aspekt ist, den man diskutieren sollte.


Relativistische Zeit

Zeit ist ein Wort, das wir verwenden, um eine wahrgenommene Reihe von Zustandsänderungen eines Systems zu beschreiben. Der aktuelle Zustand ist jetzt, der vorherige Zustand ist die Vergangenheit und der kommende Zustand ist die Zukunft.

Diese Definition gilt auch dafür, wie die Nodes die Entwicklung ihres Ledger-State in unserem Modell wahrnehmen, und ähnlich wie in unserem Universum haben die Nodes eine relativistische Wahrnehmung der Zeit.


Kausalität

Eines der wichtigsten Konzepte in der Physik ist, dass die Kausalität nicht verletzt werden kann, was bedeutet, dass, auch wenn die Zeit auf relativistische Weise wahrgenommen wird, jeder immer die Ursache vor der Wirkung wahrnehmen wird.

Dies entspricht unserem Konzept der Solidity, bei dem eine abhängige Transaktion darauf wartet, dass ihre Inputs erzeugt werden, bevor sie verarbeitet wird.


Schrödingers Katze

Schrödingers Katze ist ein Gedankenexperiment, das ein Paradoxon der Quantensuperposition veranschaulicht, bei dem eine hypothetische Katze in einer Schachtel gleichzeitig als lebendig und tot angesehen werden kann, bis eine entsprechende Untersuchung durchgeführt wird und die Schachtel geöffnet wird. In diesem Moment bricht die Überlagerung augenblicklich auf eine einzige spezifische Version zusammen.

Dies ist unserem Modell sehr ähnlich, bei dem zwei sich widersprechende Versionen eine Zeit lang nebeneinander existieren können, aber in dem Moment, in dem wir eine Bewertung durchführen und die Stimmen sammeln, werden die beiden Optionen sofort aufgelöst, indem eine einzige siegreiche Version wieder in den Master-Branch eingefügt wird.


Das Doppelspaltexperiment

Die meisten Menschen kennen das Doppelspaltexperiment, bei dem ein Lichtstrahl, der durch zwei parallele Schlitze fällt, auf einem dahinter liegenden Bildschirm ein Interferenzmuster erzeugt. Dies ist normalerweise eines der einfachsten Experimente, um zu zeigen, dass sich Licht wie eine Welle verhält und mit einem Hindernis interferiert.

Wenn wir eine Messung durchführen, um festzustellen, durch welchen Spalt jedes Photon geht, sehen wir kein Interferenzmuster mehr, da die Wellenfunktion des Photons kollabiert und es sich wie ein gewöhnliches Teilchen verhält. Das wirklich Interessante an diesem Experiment ist jedoch, dass dies auch dann der Fall ist, wenn wir die Messung durchführen, nachdem das Teilchen den Spalt bereits passiert hat.

Die Durchführung einer Messung in der Zukunft scheint den Zustand desselben Teilchens in der Vergangenheit irgendwie zu beeinflussen. Es gibt verschiedene Interpretationen dieser Beobachtung, aber wenn wir davon ausgehen, dass das Universum seinen Zustand zumindest ähnlich verfolgt wie wir die Dinge in unserem Ledger, dann wird dieses Verhalten leicht erklärbar.

Die Durchführung einer Bewertung und die Festlegung auf einen bestimmten Branch des Ledgers zu einem bestimmten Zeitpunkt in der Zukunft bedeutet auch, dass wir uns auf alle Parents dieses Branch festlegen, da jede Version immer kausal konsistent bleiben muss - also, ja, die Entscheidung über einen Sub-Branch bedeutet, dass wir auch eine Entscheidung über alle seine Parents treffen werden, was tatsächlich die Vergangenheit beeinflusst.



Verzögerte Wahl des Quantenlöschens (Delayed-choice quantum eraser)

Das Delayed-Choice-Quantum-Ereaser-Experiment ist eine Abwandlung des zuvor genannten Experiments, bei dem der Aufbau so verändert wird, dass zunächst das Photon gemessen und dann die Informationen über die Messung zu einem späteren Zeitpunkt wieder gelöscht werden.

Interessanterweise fangen die Photonen in diesem Fall an, sich wieder wie eine Welle zu verhalten, und die zuvor kollabierte Wellenfunktion wird irgendwie wiederhergestellt. Nicht der physikalische Akt der Messung scheint den Unterschied zu machen, sondern der Akt des Bemerkens, wie es der Physiker Carl von Weizsäcker (der eng mit dem Quantenpionier Werner Heisenberg zusammenarbeitete) 1941 ausdrückte.

Auch unser Ledger funktioniert ganz ähnlich. Wenn wir die Stimmen für eine bestimmte Version entfernen und stattdessen Stimmen für eine andere Version abgeben, würde der Zustand des Ledgers etwas durchlaufen, das wir als Reorg bezeichnen, und eine Version, die zuvor so aussah, als sei sie entschieden, könnte wieder in den unentschiedenen Zustand zurückkehren.

Die Löschung der Informationen über eine durchgeführte Messung könnte als eine Art byzantinisches Verhalten betrachtet werden.



Schlussfolgerung

Wenn ich all diese Ähnlichkeiten sehe, komme ich zu der Überzeugung, dass diese Art der Verfolgung eines Ledgers zumindest der Art und Weise ähnelt, wie das Universum seinen Zustand verfolgt, und das erste Mal, dass ich dies öffentlich erklärte, war am 4. April 2020 in einem Interview mit einem deutschen YouTuber.


Die von Stephan Wolfram verwendeten Multiway-Evolutionsgraphen weisen verblüffende Ähnlichkeiten mit der Art und Weise auf, wie wir unseren Ledger modellieren.


Nur 10 Tage später veröffentlichte Stephen Wolfram eine neue physikalische Theorie, die genau diese Art von Mechanismen verwendet, um die physikalische Realität unseres Universums zu modellieren, und ich denke, es ist eine sehr interessante Tatsache, dass zwei Gruppen von Forschern nur wenige Tage voneinander entfernt sehr ähnliche Aussagen machen und vor allem aus völlig unterschiedlichen Richtungen kommen.

Wer sich für Stephens Ideen interessiert, sollte sich seine Arbeit unbedingt ansehen!